Я устанавливаю несколько маркеров на своей карте, и я могу статически устанавливать уровни масштабирования и центр, но я хочу, чтобы охватить все маркеры и максимально увеличить масштаб, чтобы были видны все рынки.
Доступны следующие методы
а также
Не setCenter
поддерживает множественный ввод или ввод массива Location, а также setZoom
не имеет такой функциональности
javascript
google-maps-api-3
Trikaldarshi
источник
источник
latlng
кbounds
объекту каждый раз, когда добавляете маркер и настраиваете свою карту в соответствии с конечными границами. Смотрите ответ здесь: stackoverflow.com/questions/1556921/…Ответы:
Вам нужно использовать
fitBounds()
метод.Документация от developers.google.com/maps/documentation/javascript :
источник
getPosition
метод?LatLngLiteral
вместо того, чтобы иметь экземпляр Marker. например,bounds.extend({lat: 123, lng: 456})
.fitBounds(bounds, int)
который позволит вам иметь небольшое пространство между маркерами и краями карты (или меньше места, если вам нужно). См. ДокументациюЧтобы расширить данный ответ несколькими полезными приемами:
ОБНОВЛЕНИЕ:
Дальнейшие исследования в этой теме показывают, что fitBounds () является асинхронным, и лучше всего выполнять манипуляции с масштабированием с помощью определенного слушателя перед вызовом Fit Bounds.
Спасибо @Tim, @ xr280xr, больше примеров по теме: SO: setzoom-after-fitbounds
источник
addListenerOnce
on,zoom_changed
чтобы установить масштаб после того, как его значение было инициализировано.yourMap
,map
иthis
. Может быть, это хорошая идея, чтобы сделать его более последовательным.Размер массива должен быть больше нуля. Иначе у вас будут неожиданные результаты.
источник
Эта
MarkerClusterer
утилита на стороне клиента доступна для Google Map, как указано здесь в статьях для разработчиков Google Map. Вот краткое описание ее использования:Есть много подходов для выполнения того, что вы просили:
Вы можете прочитать о них по предоставленной ссылке выше.
Marker Clusterer
использует кластеризацию на основе сетки для кластеризации всех маркеров, желающих сетку. Кластеризация на основе сетки работает путем разделения карты на квадраты определенного размера (размер изменяется при каждом увеличении), а затем группирования маркеров в каждый квадрат сетки.Перед кластеризацией
После кластеризации
Я надеюсь, что это то, что вы искали, и это решит вашу проблему :)
источник