Lew*_*ley 2 javascript google-maps google-maps-api-3
这是我在地图上绘制多边形的代码......这不起作用.请告诉我我做错了什么.
如果我像这样手动添加点数:
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));
Run Code Online (Sandbox Code Playgroud)
而不是使用循环它工作正常.有任何想法吗?
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();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我不确定"手动添加点"是什么意思,但我认为问题是ajax调用是异步的.所以,你正在调用"$ .ajax(...)",然后在你的点数组中有任何东西之前直接进入创建Area的代码:对你的成功函数的异步调用还没有发生.
尝试重新排列代码,以便创建Area并在循环之后立即在成功函数中执行setMap(map)调用.
归档时间: |
|
查看次数: |
2254 次 |
最近记录: |