Удаление маркеров карты Google с помощью JQuery - PullRequest
2 голосов
/ 04 июня 2010

Я искал hi и low для информации по этому поводу, но безрезультатно.

В основном у меня есть страница, которая загружает кучу категорий в качестве флажков, например флажок 1 называется «Выставки» ипри нажатии отображает все выставки на карте (я передаю значение флажка функции JQuery, которая затем фильтрует XML).У меня есть 6 флажков, все относящиеся к различным категориям.У меня эта часть все работает хорошо, но теперь мне нужно удалить эти маркеры, когда флажок снят.Мне также нужно, чтобы он удалял только маркеры, связанные с этой категорией.

Код ниже:

MYMAP.placeMarkersTest = function(filename, CatValue) {
$.get(filename, function(xml) {
    $(xml).find("marker").each(function() {

        var eventCat = $(this).find('Category').text();

        if (eventCat == CatValue) {
            var name = $(this).find('name').text();
            var address = $(this).find('name').text();


            var lat = $(this).find('lat').text();
            var lng = $(this).find('lng').text();
            var point = new google.maps.LatLng(parseFloat(lat), parseFloat(lng));

            MYMAP.bounds.extend(point);

            var icon = "/images/mapping/EventsIcon.png";

            var marker = new google.maps.Marker({
                position: point,
                icon: icon,
                map: MYMAP.map
            });

            var infoWindow = new google.maps.InfoWindow();
            var html = '<strong>' + name + '</strong><br />';
            google.maps.event.addListener(marker, 'click', function() {
                infoWindow.setContent(html);
                infoWindow.open(MYMAP.map, marker);
            });
            MYMAP.map.fitBounds(MYMAP.bounds);


        } else {
            //alert("There are no matches");
        }
    });
});
}

Любые идеи о том, как удалить определенные маркеры, были бы хорошими, спасибо.

Ответы [ 2 ]

6 голосов
/ 04 июня 2010

При создании маркеров вы можете добавить категорию, к которой он относится, как свойство, используя marker.Set ('MyProperty', 'MyCategory'), а затем добавить маркеры в глобальный массив. Когда вы будете готовы удалить маркеры, вы можете перебрать массив маркеров и вызвать marker.setMap (null), чтобы удалить его с карты.

var markers = new Array(); 

function setMarkers(map, locations, category) {
        for(var i = 0; i < locations.length; i++) {
            var area = locations[i];
            var latlng = new google.maps.LatLng(area.Location[0], area.Location[1]);
            var marker = new google.maps.Marker({
                position: latlng,
                map: map,
                shadow: markerShadow,
                icon: markerImage,
                shape: markerShape,
                title: area.Name
            });
            marker.set('category', category);
            markers.push(marker);
        }
    }

function clearMarkers(category) {
    for(var i = 0; i < markers.length; i++) {
          if (markers[i].get('category') == category) {
            markers[i].setMap(null);
          }
    }
}
0 голосов
/ 04 июня 2010

Вы пытались добавить каждый маркер в глобальный массив, чтобы он сохранялся в контексте, и использовать Map.removeOverlay (markerArray [indexvalue]) для его удаления?

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