【发布时间】:2012-04-03 10:53:33
【问题描述】:
我正在使用 Google Maps API V3 在地图上放置一些标记。由于多个标记具有相同的 LatLng,可能存在重叠标记,因此我尝试使用 setMap(null) 和 setVisible(false) 删除除第一个标记之外的所有重叠标记。
问题:在标记上使用setMap(null) 时,该函数似乎没有执行任何操作,标记仍保留在地图上。但是,如果使用setVisible(false),标记确实会消失。
知道为什么会这样吗?
我还注意到,使用的标记聚类器插件确实计算了所有已经是 setVisible(false) 和 setMap(null) 的重复标记,
JS 代码
$.getJSON(getJSON_url,
{
someValues: someValues
},
function(json){
for( i = 0; i < json.length; i++) {
// Check if marker already exist at that LatLng
var duplicate_marker = 0;
for( var j = 0; j < markers.length; j++) {
// If marker exists
if( json[i].lat == markers[j].getPosition().lat() && json[i].lng == markers[j].getPosition().lng()) {
console.log( json[i].lat + ' ' + json[i].lng + ' ' + i + ' ' + markers[j].getPosition().lat() + ' ' + markers[j].getPosition().lng() + ' ' + j);
duplicate_marker = 1;
break;
}
}
// Place markers on map
var latLng = new google.maps.LatLng(json[i].lat, json[i].lng);
var marker = new google.maps.Marker({
position: latLng,
icon: base_url + 'images/template/markers/listing.png',
map: map
});
markers.push(marker);
// Make duplicate marker invisible
if(duplicate_marker) {
//marker.setMap(null);
marker.setVisible(false);
}
【问题讨论】:
-
为什么不创建重复标记?或者至少创建没有
map参数的标记,然后在检查后设置它?
标签: javascript google-maps google-maps-api-3