我正在使用Google Maps API v3创建工具。我需要覆盖一些多边形和标记,并清除它们。
我试图按照类似于this的示例 - 将多边形/标记推入数组,然后从数组中删除它们,从而删除它们。
然而,当我将多边形或标记推入我的数组时,结果数组值始终是“未定义的”,尽管我的多边形和标记在地图上正确显示。
注意:我正在使用wicket从我的数据库中读取WKT到谷歌地图。
下面的函数有问题 - 将一个id发送到functions.php,返回该ID的WKT,并将其映射 - 并且应该被推送到数组中,但不是。
我尝试将多边形/标记设置为变量,然后将其推送到数组,但这也无效。
var layersArr = [];
function getGeo(id){
$.ajax({
url: 'functions.php',
type: 'POST',
data: {
request: 'getGeo',
id: id
},
success: function(data){
wkt.read(data);
switch(wkt.type){
case 'polygon':
case 'multipolygon':
layersArr.push(new google.maps.Polygon(wkt.toObject()).setMap(map));
break;
case 'point':
layersArr.push(new google.maps.Marker(wkt.toObject()).setMap(map));
break;
default:
alert('Unrecognized wkt type');
return;
break;
}
},
error: function(jqXHR, text, error){
ajaxError(jqXHR, text, error);
}
});
}
答案 0 :(得分:2)
这是因为setMap()
根据Google Maps API v3没有返回值。
而不是:
layersArr.push(new google.maps.Polygon(wkt.toObject()).setMap(map));
你需要这样做:
var poly = new google.maps.Polygon(wkt.toObject());
layersArr.push(poly);
poly.setMap(map);