В Google Maps API v2, если бы я хотел удалить все маркеры карты, я мог бы просто сделать:
map.clearOverlays();
Как мне сделать это в Google Maps API v3 ?
Глядя на Reference API , мне неясно.
В Google Maps API v2, если бы я хотел удалить все маркеры карты, я мог бы просто сделать:
map.clearOverlays();
Как мне сделать это в Google Maps API v3 ?
Глядя на Reference API , мне неясно.
Ответы:
Просто сделайте следующее:
I. Объявите глобальную переменную:
II. Определить функцию:
ИЛИ
III. Вставьте маркеры в 'markerArray' перед вызовом следующего:
Внутривенно Позвоните
clearOverlays();
илиmap.clearOverlays();
функцию, где это необходимо.Это оно!!
источник
markersArray
пустой массив вместо установки его длины, что я нахожуmarkersArray = [];
while
подход для обработки массива:while(markersArray.length) { markersArray.pop().setMap(null); }
. После этого не нужно очищать массив.Та же проблема. Этот код больше не работает.
Я исправил это, изменил метод clearMarkers следующим образом:
set_map (null) ---> setMap (null)
Документация была обновлена и теперь содержит подробные сведения по этой теме: https://developers.google.com/maps/documentation/javascript/markers#remove.
источник
new Array();
?Похоже, что в V3 такой функции еще нет.
Люди предлагают сохранить в массиве ссылки на все маркеры, которые есть на карте. И затем, когда вы хотите удалить их все, просто выполните цикл через массив и вызовите метод .setMap (null) для каждой из ссылок.
Смотрите этот вопрос для получения дополнительной информации / кода.
Моя версия:
Код отредактированной версии этого кода http://www.lootogo.com/googlemapsapi3/markerPlugin.html Я убрал необходимость вызывать addMarker вручную.
Pros
Cons
источник
Это было самое простое из всех решений, первоначально опубликованных YingYang Mar 11 '14 в 15: 049 под первоначальным ответом пользователя на оригинальный вопрос.
Я использую его то же решение через 2,5 года с Google Maps v3.18, и он работает как шарм
источник
Я не думаю, что есть один в V3, поэтому я использовал вышеуказанную пользовательскую реализацию.
Отказ от ответственности: я не писал этот код, но я забыл сохранить ссылку, когда слил ее в свою кодовую базу, поэтому я не знаю, откуда она взялась.
источник
На новой версии v3 рекомендовано хранить в массивах. следующим образом.
Смотрите пример в оверлейном обзоре .
источник
В демонстрационной галерее Google есть демонстрация того, как они это делают:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
Вы можете просмотреть исходный код, чтобы увидеть, как они добавляют маркеры.
Короче говоря, они хранят маркеры в глобальном массиве. При очистке / удалении они перебирают массив и вызывают «.setMap (null)» для данного объекта маркера.
Тем не менее, этот пример показывает один «трюк». «Очистить» в этом примере означает удаление их с карты, но сохранение их в массиве, что позволяет приложению быстро добавить их на карту. В некотором смысле это действует как «сокрытие» их.
«Удалить» также очищает массив.
источник
работает только на IE.
работает на Chrome, Firefox, то есть ...
источник
Решение довольно простое. Вы можете использовать метод:
marker.setMap(map);
. Здесь вы определяете, на какой карте появится значок.Таким образом, если вы установите
null
в этом методе (marker.setMap(null);
), контакт исчезнет.Теперь вы можете написать функцию-ведьму, заставляя исчезать все маркеры на вашей карте.
Вы просто добавляете ваши контакты в массив и объявляете их,
markers.push (your_new pin)
например, следующим кодом:Это функция, которая может устанавливать или скрывать все маркеры вашего массива на карте:
Чтобы удалить все ваши маркеры, вы должны вызвать функцию с помощью
null
:И, чтобы удалить и исчезнуть все ваши маркеры, вы должны сбросить массив маркеров следующим образом:
Это мой полный код. Это самое простое, что я мог бы уменьшить. Будьте внимательны, вы можете заменить
YOUR_API_KEY
в коде свой ключ Google API:Вы также можете обратиться к разработчику Google или к полной документации, также на веб-сайте разработчика Google .
источник
Чистое и простое применение ответа Ролингера.
источник
Функция «
set_map
», опубликованная в обоих ответах, больше не работает в API Карт Google v3.Интересно, что случилось
Обновить:
Похоже, Google изменил свой API таким образом, что "
set_map
" не "setMap
".http://code.google.com/apis/maps/documentation/v3/reference.html
источник
Здесь вы можете найти пример того, как удалить маркеры:
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es
источник
Следующее от Anon работает отлично, хотя с мерцаниями при многократной очистке оверлеев.
Просто сделайте следующее:
I. Объявите глобальную переменную:
II. Определить функцию:
III. Вставьте маркеры в 'markerArray' перед вызовом следующего:
Внутривенно Вызывайте
clearOverlays()
функцию везде, где это необходимо.Это оно!!
Надеюсь, что это поможет вам.
источник
for(in in markersArray){}
вероятно, не делает то, что вы ожидаете. ЕслиArray
он распространяется где-либо еще в коде, он будет перебирать и эти свойства, а не только индексы. Версия javascript,markersArray.forEach()
которая поддерживается не везде. С вами будет лучшеfor(var i=0; i<markersArray.length; ++i){ markersArray.setMap(null); }
Я нашел использование библиотеки markermanager в проекте google-maps-utility-library-v3 как самый простой способ.
1. Настройте MarkerManager
2. Добавьте маркеры в MarkerManager
3. Для очистки маркеров вам просто нужно вызвать
clearMarkers()
функцию MarkerMangerисточник
clearMarkers
нужно сделать, это перебрать маркеры вызоваmarker.setMap(null)
(я проверил источник). Было бы меньше труда поместить их в массив и сделать это самостоятельно.Вы также можете сделать это так:
источник
Я только что попробовал это с kmlLayer.setMap (null), и это сработало. Не уверен, что это будет работать с обычными маркерами, но, кажется, работает правильно.
источник
Чтобы убрать все наложения, включая полис, маркеры и т. Д.
просто используйте:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
Вот функция, которую я написал, чтобы сформировать меня в приложении карты:
источник
Чтобы удалить все маркеры с карты, создайте функции примерно так:
1.addMarker (location): эта функция используется для добавления маркера на карту.
2.clearMarkers (): эта функция удаляет все маркеры с карты, а не с массива
3.setMapOnAll (map): эта функция используется для добавления информации о маркерах в массив
4.deleteMarkers (): эта функция удаляет все маркеры в массиве, удаляя ссылки на них.
источник
Самый простой способ сделать это - перебрать все элементы карты. Маркеры (вместе с полигонами, полилиниями и т. Д.) Хранятся в слое данных карты.
В случае, если маркеры добавляются через менеджер чертежей , лучше всего создать глобальный массив маркеров или поместить маркеры в слой данных при создании следующим образом:
Я рекомендую второй подход, поскольку он позволяет позже использовать другие методы класса google.maps.data.
источник
Этот метод Google использует по крайней мере в одном примере:
Проверьте пример Google для полного примера кода:
https://developers.google.com/maps/documentation/javascript/examples/places-searchbox
источник
Я не знаю почему, но установка
setMap(null)
на мои маркеры не работала для меня, когда я используюDirectionsRenderer
.В моем случае мне также пришлось позвонить
setMap(null)
своемуDirectionsRenderer
.Что-то такое:
источник
Просто пройдите по маркерам и удалите их с карты, после чего пустой массив карт:
источник
просто очистите Googlemap
источник
Я перепробовал все предложенные решения, но у меня ничего не получалось, пока все мои маркеры были в кластере. В конце концов я просто положил это:
Другими словами, если вы оборачиваете маркеры в кластере и хотите удалить все маркеры, вы вызываете:
источник
Вы имеете в виду удалить, как скрывая их или удаляя их?
если прячешься:
если вы хотите удалить их:
Обратите внимание, что я использую маркеры массива, чтобы отслеживать их и сбрасывать вручную.
источник
Вам нужно установить нулевую карту на этот маркер.
источник
Я нашел простое решение (я думаю):
источник
Я использую стенографию, которая делает работу хорошо. Просто делать
источник
если вы используете плагин gmap V3:
$("#map").gmap("removeAllMarkers");
см .: http://www.smashinglabs.pl/gmap/documentation#after-load
источник
Я знаю, что это может быть простое решение, но это то, что я делаю
Работает каждый раз для меня.
источник