从Google Map中删除单个标记 - API v3

时间:2011-06-18 21:23:29

标签: google-maps-api-3 markers

我想从Google地图中删除单个标记。我使用的是版本3 API。我知道如何通过维护markerArray并为所有人设置map null来删除所有标记。

为了逐个删除,我想创建一个键值对组合。所以我给了一把钥匙并删除了特定的标记。我需要帮助。

以下是我用来标记标记的代码:

function geoCodeAddresses(data) {

    var markerInfo = {addressKey: '', marker:''};

    for (var i = 0; i < data.length; i++) {
        myLocation = data[i];

        geocoder.geocode({"address":myLocation}, function (results, status) {

            if (status == google.maps.GeocoderStatus.OK) {
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({map:map, position:results[0].geometry.location});
                // checkpoint A
                alert(myLocation);
                /*
                markerInfo.addressKey = myLocation;
                markerInfo.marker = marker;*/

                //mArray.push(markerInfo);
            }
        });

    }
}

我将搜索addresskey并从mArray中移除标记。但是我每次都在地理编码回调方法中得到最后一个值。每次都有一个物体被推动。 var myLocation总是给我数组的最后一个索引的地址。如果我在检查点A提醒它。

我的方法是对的?

1 个答案:

答案 0 :(得分:0)

你的问题就在这一行:

mArray.push(markerInfo);

这不会将markerInfo的值推送到您的数组中。它将对markerInfo的引用推送到您的数组中。现在,在循环的下一次迭代中,当您更改markerInfo的值时,它也会更改数组中引用所指向的值。所以你的数组最终会得到所有具有相同值的元素。

请改为尝试:

mArray.push({addressKey:myLocation,marker:marker});

如果这不起作用,那么:

mArray.push({addressKey:data[i],marker:marker});