Как проверить, находится ли маркер карты Google уже внутри массива маркеров?
Даже после этого markersArray.push(marker);
условие (marker in markersArray)
является ложным.Google Maps - Как найти маркер в массиве маркеров?
ответ
Во-первых, (marker in markersArray)
неверно, так как in
не ищет элементов в массиве.
Он ищет недвижимость.
Как это работает для меня был
for (var i=0; i<markersArray.length; i++) {
if (markersArray[i].getPosition().equals(marker.getPosition())) {
...
Это работает до тех пор, как то, что вам нужно сравнить только координаты маркеров.
Мы используем здесь оператор классов .LalLng.
Вы должны пройти через массив, чтобы проверить маркер.
for (var i=0; i<markersArray.length; i++) {
if (markersArray[i] === marker) {
//doSomething...
break;
}
}
markersArray.indexOf(marker) > -1
Я не уверен, что могу использовать его в моем случае, так как мне нужно создать экземпляр маркера, чтобы он мог его сравнивать, но если я его создам, то этот экземпляр не может быть действительно в массиве. Я думаю, что я должен использовать оператор '==='. – Ash
var marker = new google.maps.Marker({
icon:icon,
position: position,
map: map
});
Маркеры имеют собственный идентификатор. Вы можете получить этот идентификатор с помощью
var marker_id = marker.__gm_id;
, а затем получить маркер на карте
map.Hb.qa[marker_id];
- 1. Google Maps несколько маркеров в массиве
- 2. Хранение маркеров Google Maps в массиве
- 3. Пользовательский маркер Google Maps
- 4. Типы маркеров Google Maps
- 5. Несколько маркеров - google maps
- 6. Автоматическое обновление маркеров Google Maps
- 7. Google Maps - Создание нескольких маркеров
- 8. Добавление нескольких маркеров Google Maps
- 9. Google Maps Добавление маркеров динамически
- 10. Группировка маркеров Google Maps
- 11. Google Maps несколько маркеров clickevent
- 12. Фильтрация маркеров Google Maps
- 13. Google Maps Customized Маркер иконки для различных маркеров не отображаются
- 14. Множество маркеров Google Maps
- 15. Google Maps Несколько пользовательских маркеров
- 16. маркер Google Maps Свифта InfoWindow
- 17. Google Geocoder + Google Maps добавления маркеров
- 18. Android-маркер Google Maps
- 19. Размещение маркеров в Google Maps
- 20. AngularUI - Google Maps - Удалить маркер
- 21. Угловой пользовательский маркер Google Maps
- 22. Захват события переноса маркеров Google Maps
- 23. Перекрывающий маркер google maps
- 24. Удалить Google Maps маркер
- 25. Маркер Google Maps
- 26. Google Maps Удалить маркер с его идентификатором
- 27. Google Maps api - метка для маркеров
- 28. Получить координаты маркеров Google Maps
- 29. Google Maps v3: построение различных наборов маркеров
- 30. получить выбранный маркер google maps api 3
@rob, так что если у меня есть, скажем, в 1000 маркеров на карте и я панорамирование карту просто чтобы все маркеры все еще отображались, и мне сказали не удалять и добавлять снова маркеры, но сначала проверить, если они уже есть, так что это означало бы, что для каждого из 1000 маркеров мне придется усреднить пройти через половину массива. Это может привести к 500 000 проверок, в худшем случае. Разве не было бы меньше потреблять просто удалить все 1000 маркеров, а затем добавить их обратно? – Ash
Я сомневаюсь, что было бы лучше удалить и добавить их обратно, так как для этого процесса существует достаточное количество накладных расходов. Один из вариантов, если у вас проблема с производительностью, заключается в том, чтобы хранить маркеры отдельно в таблице поиска, так что вам действительно не нужно выполнять итерацию. Если у вас есть уникальный идентификатор для каждого маркера, вы можете использовать его как имя члена в объекте. Существуют различные другие способы, которые вы могли бы использовать, чтобы отслеживать их, поскольку вы, вероятно, создаете, добавляете и удаляете эти маркеры самостоятельно. – rob
@Ash: вы добавляете маркеры в видимую область и скрываете те, которые находятся в невидимой области, когда карта подкрашена? –