Подтвердить что ты не робот

Карты Google V3: проверьте, присутствует ли маркер на карте?

В Google Maps V3 есть ли способ проверить, действительно ли маркер присутствует на карте?

У меня есть маркеры, которые исчезают при нажатии. Я бы хотел, чтобы какая-то логика проверяла текущую видимость маркера.

Например:

var start_marker = null;
start_marker = new google.maps.Marker({ position: location, map: map, clickable: true });
google.maps.event.addListener(start_marker, 'click', function(event) {
  start_marker.setMap(null);
}); 
// ... Later in code: check whether marker is currently visible. 
console.log('Type of start_marker is now: ' + typeof(start_marker));

Я надеялся, что это даст мне нулевой тип, когда маркер не будет виден, но на самом деле он все еще является объектом.

Итак, как еще я могу проверить, отображается ли этот конкретный маркер на карте?

Спасибо!

4b9b3361

Ответ 1

Этот однострочный файл вернет true, если позиция marker содержится в текущей границе map и возвращает false, если нет.

map.getBounds().contains(marker.getPosition())

Надеюсь, что это поможет, Приветствия!

Ответ 2

start_marker.getMap()

Вернет null, если ранее вы использовали start_marker.setMap(null); как в вашем примере.

Тем не менее, почему бы не использовать setVisible и getVisible, если вы просто хотите скрыть и показать маркеры?

Ответ 3

Если вы хотите просто скрыть/показать маркер, вы можете использовать метод setVisible маркера, например:

 start_marker.setVisible(false);//to hide
 start_marker.setVisible(true);//to show

потому что setMap (null) не скрывает маркер, но удаляет маркер с карты.

Затем вы можете использовать getVisible(), чтобы получить видимость маркера, например:

console.log('Type of start_marker is now: ' + start_marker.getVisible());

Вы можете прочитать их здесь: https://developers.google.com/maps/documentation/javascript/overlays#Markers  https://developers.google.com/maps/documentation/javascript/overlays

Ответ 5

Я думаю, что вам нужно изменить свою логику. Почему бы не сохранить маркеры в массиве и полностью удалить их из этого массива при нажатии. Таким образом, остальные маркеры являются видимыми.

Приветствия