这是我在地图上绘制多边形的代码......这不起作用。请告诉我我做错了什么。
如果我像这样手动添加点数:
points.push(new google.maps.LatLng(51.35020072, -2.978521717));
points.push(new google.maps.LatLng(51.35047285, -2.971755353));
points.push(new google.maps.LatLng(51.34943740, -2.969097019));
而不是使用循环它工作正常。有任何想法吗?
function drawpolygon(areaid) {
var points = [];
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "polygons.asmx/GetPolygonsByArea",
data: '{ id: "' + areaid + '" }',
dataType: "json",
success: function (msg) {
var c = eval(msg.d);
for (var i in c) {
var lat = parseFloat(c[i][1]);
var lng = parseFloat(c[i][2]);
points.push(new google.maps.LatLng(lat, lng));
}
}
});
var Area;
Area = new google.maps.Polygon({
paths: points,
strokeColor: "#204F68",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#A1CBE2",
fillOpacity: 0.35
});
Area.setMap(map);
google.maps.event.addListener(Area, 'click', showArrays);
infowindow = new google.maps.InfoWindow();
}
答案 0 :(得分:5)
我不确定“手动添加点”是什么意思,但我认为问题是ajax调用是异步的。所以,你正在调用“$ .ajax(...)”,然后直接进入创建区域的代码你的点数组中有任何内容:异步调用你的成功函数还没有发生。
尝试重新排列代码,以便在循环之后创建Area并在成功函数中执行setMap(map)调用。