GoogleMaps V3仅显示1个多边形

时间:2012-08-18 12:03:52

标签: javascript maps polygon

有一个网页,显示来自许多来源的天气图。您选择的图表来源和图表的大纲显示在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});
        }

    }

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