从xml获取google邮件标记后,使用jquery删除它们

时间:2010-05-23 18:46:30

标签: jquery google-maps google-maps-markers

我正在尝试创建一个包含Google地图的页面。地图中填充了xml文件中的标记。 我只是无法弄清楚如何删除与最新用户输入不匹配的“旧”标记。 目前,我的js在第一个xml项目之后停止。

clearList.push(marker);应该将生成的标记放在以后使用。 当用户点击搜索按钮时,我希望所有标记都消失并使用clearMarkers();.

也许有人可以提供帮助 塞巴斯蒂安

这是我的JavaScript:

$(document).ready(function() {
  $("#map").css({height: 650});
    var clearList = [];
    var myLatLng = new google.maps.LatLng(52.518143, 13.372879);
    MYMAP.init('#map', myLatLng, 11);

  $("#showmarkers").click(function(e){
            clearMarkers();
        MYMAP.placeMarkers('markers.xml');

  });

});

function clearMarkers() {
    $(clearList).each(function () {
         this.setmap(null);
    });
    clearList = [];
}



var MYMAP = {
    map: null,
    bounds: null
    }

MYMAP.init = function(selector, latLng, zoom) {
    var myOptions = {
    zoom:zoom,
    center: latLng,
    mapTypeId: google.maps.MapTypeId.HYBRID
    }
    this.map    =   new google.maps.Map($(selector)[0], myOptions);
    this.bounds =   new google.maps.LatLngBounds();
    }

MYMAP.placeMarkers = function(filename) {
    $.get(filename, function(xml){  
        $(xml).find("marker").each(function(){
            // read values from xml for searching

            var platzart =  $(this).find('platzart').text();
            var ort      =  $(this).find('ort').text();
            var open     =  $(this).find('open').text();

            if (platzart    =="Kunstrasen"  && $('#kunstrasen').attr('checked')
                || platzart =="Rasen"       && $('#rasen').attr('checked') 
                || platzart =="Tartan"      && $('#tartan').attr('checked')
                || platzart =="Boltzplatz"  && $('#boltzplatz').attr('checked')
                ){

            // read values from xml for additional info
            var name    =   $(this).find('name').text();
            var plz     =   $(this).find('plz').text();
            var note    =   $(this).find('note').text();
            var adress  =   $(this).find('adress').text();

            // create a new LatLng point for the marker
            var lat     =   $(this).find('lat').text();
            var lng     =   $(this).find('lng').text();
            var point   =   new google.maps.LatLng(parseFloat(lat),parseFloat(lng));

            // extend the bounds to include the new point
            MYMAP.bounds.extend(point);

            // create new marker
            var marker = new google.maps.Marker({
                position: point,
                map: MYMAP.map
            });
            clearList.push(marker);

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

提前致谢

1 个答案:

答案 0 :(得分:0)

看起来你有一个错字:

function clearMarkers() {
    $(clearList).each(function () {
         this.setmap(null);
    });
    clearList = [];
}

应该是:

function clearMarkers() {
    $(clearList).each(function () {
         this.setMap(null);
    });
    clearList = [];
}

this.setmap应为this.setMap