Я использую Google Maps API V3, чтобы разместить некоторые маркеры на карте.Поскольку могут существовать перекрывающиеся маркеры из-за того, что несколько маркеров имеют одинаковый LatLng, я пытаюсь удалить все перекрывающиеся маркеры, кроме первого, используя setMap(null)
и setVisible(false)
.
Проблема: Когда на маркере используется setMap(null)
, функция, похоже, ничего не делает, и маркер остается на карте.Однако, если используется setVisible(false)
, маркер действительно исчезает.
Есть идеи, почему это происходит?
Я также заметил, что используемый плагин кластеризатора маркеров подсчитал все дубликаты маркеров, которые уже были setVisible(false)
и setMap(null)
,
JS Code
$.getJSON(getJSON_url,
{
someValues: someValues
},
function(json){
for( i = 0; i < json.length; i++) {
// Check if marker already exist at that LatLng
var duplicate_marker = 0;
for( var j = 0; j < markers.length; j++) {
// If marker exists
if( json[i].lat == markers[j].getPosition().lat() && json[i].lng == markers[j].getPosition().lng()) {
console.log( json[i].lat + ' ' + json[i].lng + ' ' + i + ' ' + markers[j].getPosition().lat() + ' ' + markers[j].getPosition().lng() + ' ' + j);
duplicate_marker = 1;
break;
}
}
// Place markers on map
var latLng = new google.maps.LatLng(json[i].lat, json[i].lng);
var marker = new google.maps.Marker({
position: latLng,
icon: base_url + 'images/template/markers/listing.png',
map: map
});
markers.push(marker);
// Make duplicate marker invisible
if(duplicate_marker) {
//marker.setMap(null);
marker.setVisible(false);
}