0

我编写了下面的代码,当单击 id = "showmarkers" 的按钮时,它会在谷歌地图上显示标记。

我想要发生的是当再次单击同一个按钮时(或者当单击另一个按钮时,id =“hidemarkers”)标记被隐藏。

任何帮助将不胜感激,谢谢

$(document).ready(function() {
$("#map").css({
    height: 500,
    width: 600
});
var myLatLng = new google.maps.LatLng(51.50754,-0.127894);
    MYMAP.init('#map', myLatLng, 13);

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

});

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

MYMAP.init = function(selector, latLng, zoom) {
var myOptions = {
zoom:zoom,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}

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(){
        var name = $(this).find('name').text();
        var address = $(this).find('address').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 marker = new google.maps.Marker({
            position: point,
            map: MYMAP.map
        });

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

    });
});
}
4

1 回答 1

0

你可以有一个布尔标志'shouldHideMarkers'并检查它是否为真,所以隐藏它们,或者假的,所以显示它们。请记住,如果要从地图中删除标记,则应将其地图属性设置为 null。最好的方法是将所有标记变量存储到一个数组中并遍历数组以将它们的 map 属性设置为 null 以隐藏它们

于 2013-10-19T14:38:22.247 回答