Ответ 1
Этот однострочный файл вернет true
, если позиция marker
содержится в текущей границе map
и возвращает false
, если нет.
map.getBounds().contains(marker.getPosition())
Надеюсь, что это поможет, Приветствия!
В 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));
Я надеялся, что это даст мне нулевой тип, когда маркер не будет виден, но на самом деле он все еще является объектом.
Итак, как еще я могу проверить, отображается ли этот конкретный маркер на карте?
Спасибо!
Этот однострочный файл вернет true
, если позиция marker
содержится в текущей границе map
и возвращает false
, если нет.
map.getBounds().contains(marker.getPosition())
Надеюсь, что это поможет, Приветствия!
start_marker.getMap()
Вернет null, если ранее вы использовали start_marker.setMap(null); как в вашем примере.
Тем не менее, почему бы не использовать setVisible и getVisible, если вы просто хотите скрыть и показать маркеры?
Если вы хотите просто скрыть/показать маркер, вы можете использовать метод 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
Я думаю, что вам нужно изменить свою логику. Почему бы не сохранить маркеры в массиве и полностью удалить их из этого массива при нажатии. Таким образом, остальные маркеры являются видимыми.
Приветствия