有一个网页,显示来自许多来源的天气图。您选择的图表来源和图表的大纲显示在Google地图上。 (参见http://www.geoffschultz.org/weather_map.php天气图/ GMDSS /预测 - 应该绘制3个多边形)到目前为止,所有的图表都是矩形的,但我只是想到了非矩形图表。我已经记住了这个编码js,但我一直感到困惑,因为只显示了最后绘制的多边形。关于多个多边形,我有什么遗漏吗?
代码非常简单。它获取一个边界框坐标数组。对于简单的矩形,数组元素看起来像“-31,-32 | 2,25”,对于多边形,它只有更多的坐标用“|”分隔。如果有2个坐标,我画一个矩形,否则我绘制一个多边形,用第一个点关闭它。
我做错了什么,因为它适用于矩形?
- 杰夫
for (i in bb[selValue])
{
bb_lat_long = bb[selValue][i]["bb_lat_long"].split("|");
if (bb_lat_long.length == 2) //Rectangle
{
lat_long = bb_lat_long[0].split(",");
sw = new google.maps.LatLng(lat_long[0], lat_long[1]);
lat_long = bb_lat_long[1].split(",");
ne = new google.maps.LatLng(lat_long[0], lat_long[1]);
bounds = new google.maps.LatLngBounds(sw, ne);
bounding_box = new google.maps.Rectangle({map: map, bounds: bounds, fillOpacity: 0.05, strokeWeight: 1});
}
else // polygon
{
poly_lat_long.length = 0;
for (j = 0; j < bb_lat_long.length; j++)
{
lat_long = bb_lat_long[j].split(",");
poly_lat_long.push(new google.maps.LatLng(lat_long[0], lat_long[1]));
}
lat_long = bb_lat_long[0].split(",");
poly_lat_long.push(new google.maps.LatLng(lat_long[0], lat_long[1])); // close polygon with 1st point
bounding_box = new google.maps.Polygon({map: map, paths: poly_lat_long, fillOpacity: 0.05, strokeWeight: 1});
}
}
答案 0 :(得分:0)
我怀疑它与重新使用新多边形中的路径有关(你最终会得到多个多边形,只是所有都是相同的,如果你在本地声明poly_lat_long(带var),或者make一个createPolygon函数,它将在路径上获得函数闭包。
在使用poly_lat_long.length = 0;
清除路径数组之前,我已经看到过此行为
而不是creating a new array (poly_lat_long = [])
。
Thread from the Google Maps API v3 group discussing similar problem