Границы Google Maps
Масштаб карты Google API API увеличен, чтобы показать все маркеры, добавленные после поиска в Google местах. На мобильной карте это может занять немного времени, и в качестве этого приложения для велосипедистов я предпочитаю показывать результаты только в окне просмотра. Большинство исследований, которые я прочитал, показывают, что невозможно возвращать результаты только через порт просмотра. Могу ли я просто не допустить изменения границ карты после добавления маркеров? Было бы замечательно, если бы он просто показывал мне маркеры, добавленные к текущим границам, если только не был возвращен только один маркер, тогда он должен увеличить этот маркер. Таким образом, поиск чего-то общего, например, пиццы, покажет множество пиццерий в текущем окне без панорамирования или масштабирования. Поиск определенного адреса приведет к увеличению этого маркера, даже если он находится вне области просмотра.
var input = document.getElementById('target');
var searchBox = new google.maps.places.SearchBox(input);
var bounds = map.getBounds();
searchBox.setBounds(bounds);
var markers = [];
service = new google.maps.places.PlacesService(map);
google.maps.event.addListener(searchBox, 'places_changed', function() {
var places = searchBox.getPlaces();
// alert("getPlaces returns "+places.length+" places");
for (var i = 0; i < gmarkers.length; i++) {
gmarkers[i].setMap(null);
}
gmarkers = [];
var bounds = new google.maps.LatLngBounds();
for (var i = 0, place; place = places[i]; i++) {
var place = places[i];
createMarker(place);
bounds.extend(place.geometry.location);
}
map.fitBounds(bounds);
// if (markers.length == 1) map.setZoom(17);
});
google.maps.event.addListener(map, 'bounds_changed', function() {
var bounds = map.getBounds();
searchBox.setBounds(bounds);
});
ib = new InfoBox({});
1 ответ
Ответ на ваш вопрос:
- можно ли мне просто помешать изменению границ карты после добавления маркеров?
Да. И, как вы говорите, включает в себя удаление map.fitBounds.
Чтобы получить карту по центру и увеличить по одному адресу, используйте для этого геокодер (реализуйте его отдельно) или проверьте количество результатов, если оно одно, центрируйте карту по результату и, если в окне просмотра предлагается результат, используйте это для центрирования и масштабирования карты [с map.fitBounds (place.geometry.viewport), я думаю].