setVisible (false) удаляет маркер, но не setMap (null) - PullRequest
1 голос
/ 03 апреля 2012

Я использую 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);
            }

1 Ответ

1 голос
/ 03 апреля 2012

Вы упомянули использование кластера.Кластер отображает и скрывает отдельные маркеры, вызывая setMap, поэтому он, вероятно, переопределяет ваш вызов setMap (null).Но так как он уважает setVisible, он не дает им появляться.Удалите дубликаты маркеров из кластеризатора или вообще не создавайте их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...