Границы 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), я думаю].

Другие вопросы по тегам