【问题标题】:Google Maps API v3 drop markers from XML with delay?Google Maps API v3 从 XML 中延迟删除标记?
【发布时间】:2012-01-24 11:30:34
【问题描述】:

我正在使用 Google Maps api (v3) 和 jQuery 显示几批标记。

我已经让它几乎完全按照我想要的方式工作,但我需要一个一个地删除标记,而不是一次全部删除。

我在 Google 地图文档中找到了this example,但我不知道如何将它与我的脚本集成。

有人可以帮助我吗?

到目前为止,这是我的代码:

$(document).ready(function () {
    $("#map").css({
        height: 600,
        width: 958
    });
    var jeLatLng = new google.maps.LatLng(17.74033553, 83.25067267);
    jeMap.init('#map', jeLatLng, 11);

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

var jeMap = {
    map: null
}

var UK = new google.maps.LatLng(21.192481, 0.0);

jeMap.init = function (selector, latLng, zoom) {
    var myOptions = {
        zoom: 2,
        center: UK,
        mapTypeId: google.maps.MapTypeId.HYBRID,
        streetViewControl: false,
        mapTypeControl: false,
        backgroundColor: '#111'
    }
    this.map = new google.maps.Map($(selector)[0], myOptions);
}

var infoWindow = new google.maps.InfoWindow();

jeMap.placeMarkers = function (filename) {
    $.get(filename, function (xml) {
        $(xml).find("marker").each(function () {
            var name = $(this).find('name').text();
            var address = $(this).find('address').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));

            var marker = new google.maps.Marker({
                map: jeMap.map,
                position: point,
                animation: google.maps.Animation.DROP,
                icon: 'marker_pink.png'
            });

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

我知道我需要以某种方式修改 jeMap.placeMarkers 函数,以便它循环遍历每个标记,每个循环之间有延迟,只是不知道如何。

【问题讨论】:

    标签: javascript jquery google-maps-api-3


    【解决方案1】:

    这个怎么样:

    jeMap.placeMarkers = function (filename) {
        //setup counter variable
        var counter = 0;
        $.get(filename, function (xml) {
            $(xml).find("marker").each(function () {
                var name = $(this).find('name').text();
                var address = $(this).find('address').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));
    
                //set timeout based on maps example
                setTimeout(function() {
                    addMarker(point, address, name);
                }, counter * 200);
    
                //increment counter
                counter++;            
            });
        });
    }
    
    //add marker with specific point.
    function addMarker(point, address, name){
        var marker = new google.maps.Marker({
            map: jeMap.map,
            position: point,
            animation: google.maps.Animation.DROP,
            icon: 'marker_pink.png'
        });
    
        var html = '<strong>' + name + '</strong.><br />' + address;
        google.maps.event.addListener(marker, 'click', function () {
            infoWindow.setContent(html);
            infoWindow.open(jeMap.map, marker);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 2012-05-24
      • 2013-05-02
      • 2011-02-25
      • 2011-12-19
      • 2011-10-07
      • 2015-07-16
      • 1970-01-01
      • 2015-05-05
      相关资源
      最近更新 更多