API Карт Google v3 возвращает карту в маркер
Я ищу способ рецентра (фокус) карты, если маркер находится вне карты. Например, если вы нажмете маркер, который не находится в вашем viewarea...
Маркер 1: Нью-Йорк Маркер 2: СанФрансиско
в V2 я делаю этот путь... но для v3 containsLatLng нуждается в дополнительной библиотеке и не работает для меня... (см. мой другой пост: Карта Google Maps v3.getBounds(). containsLatLng не является функцией) - это любой другой способ сосредоточиться на позиции маркера?
обновление:
if ((!map.getBounds().contains(marker.getPosition())) & (showAllCategoryElements == 0)) {
var newCenterPointLng = (map.getBounds().getCenter().lng() + marker.getPosition().lng()) / 2;
var newCenterPointLat = (map.getBounds().getCenter().lat() + marker.getPosition().lat()) / 2;
map.panTo(marker.getPosition());
//map.setCenter(new google.maps.LatLng(newCenterPointLat, newCenterPointLng));
if (!map.getBounds().contains(marker.getPosition())){
map.zoomOut();
}
}
Ответы
Ответ 1
Используемый метод содержит(), а не содержитLatLng(). map.getBounds().contains(marker.getPosition())
Вы можете использовать либо методы setCenter(), либо panTo() карты, чтобы сосредоточиться на позиции маркера: map.setCenter(marker.getPosition())
или map.panTo(marker.getPosition())
Итак, если я правильно понимаю, что вы пытаетесь сделать, это должно выглядеть так:
if ((!map.getBounds().contains(marker.getPosition())) && (showAllCategoryElements == 0)) { //Note the double &
map.setCenter(marker.getPosition());
//OR map.panTo(marker.getPosition());
}