Чтобы получить карту, чтобы переместить/масштабирование к месту, когда выбрано предложение, вам необходимо будет реализовать onResults
обработчика:
var fromSearchBox = new nokia.places.widgets.SearchBox({
targetNode: "fromSearchBox",
template: "fromSearchBox",
map: map,
onResults: function (data) {
// Your code goes here //
}
});
Как вы заметили data
поля может или не может содержать ограничивающий коробка. Это связано с тем, что только несколько мест охватывают определенную область , большинство из них: .
Для подмножества, которые имеют BoundingBox вы можете сделать следующее:
if (data.results.items[0].boundingBox){
map.zoomTo(data.results.items[0].getBoundingBox());
}
Для остатка ответ будет зависеть от того, что вы пытаетесь достичь, но вы можете попробовать любой из следующих действий:
Перемещение к местоположению на карте без изменения масштаба. (Т.е. позволить пользователю решить)
map.set("center", data.results.items[0].position);
Переход к указанной ограничивающей рамке для точечного объекта в указанном месте.
var obj = new nokia.maps.map.StandardMarker(startPoint);
map.zoomTo(obj.getBoundingBox());
Или же: map.zoomTo(nokia.maps.geo.BoundingBox.coverAll([startPoint]));
Определить рамку, окружающую местоположение точки и приблизить к этому вместо
startPoint =data.results.items[0].position;
bottomLeft = new nokia.maps.geo.Coordinate(startPoint.latitude - 0.1,
startPoint.longitude + 0.1);
topRight = new nokia.maps.geo.Coordinate(startPoint.latitude + 0.1,
startPoint.longitude - 0.1);
map.zoomTo(nokia.maps.geo.BoundingBox.coverAll([topRight, bottomLeft]));
Дополнительно Display.zoomTo() может также принимать адди , поэтому, если вы используете map.zoomTo(BoundingBox, true)
, вы также сохраните текущий центр карты на экране, и это может создать больше контекста для пользователя.
Я думаю, что буду использовать обложку. Статический метод, спасибо @JasonFox! – Flea777