Javascript GoogleMaps V3仅显示1个多边形

Javascript GoogleMaps V3仅显示1个多边形,javascript,maps,polygon,Javascript,Maps,Polygon,有一个网页,显示来自许多来源的天气图。你选择你的来源,图表的轮廓就会出现在谷歌地图上。(参见天气图/GMDSS/Forecasions-应该画3个多边形)到目前为止,所有的图表都是矩形的,但我刚刚发现需要非矩形图表。我在编写js时考虑到了这一点,但我感到困惑,因为只显示最后绘制的多边形。关于多个多边形,我是否缺少一些东西 代码非常简单。它获取一个边界框坐标数组。对于简单的矩形,数组元素看起来像“-31,-32 | 2,25”,对于多边形,它只是有更多由“|”分隔的坐标。如果有两个坐标,我画一个矩

有一个网页,显示来自许多来源的天气图。你选择你的来源,图表的轮廓就会出现在谷歌地图上。(参见天气图/GMDSS/Forecasions-应该画3个多边形)到目前为止,所有的图表都是矩形的,但我刚刚发现需要非矩形图表。我在编写js时考虑到了这一点,但我感到困惑,因为只显示最后绘制的多边形。关于多个多边形,我是否缺少一些东西

代码非常简单。它获取一个边界框坐标数组。对于简单的矩形,数组元素看起来像“-31,-32 | 2,25”,对于多边形,它只是有更多由“|”分隔的坐标。如果有两个坐标,我画一个矩形,否则我画一个多边形,用第一个点闭合它

我做错了什么,因为它适用于矩形

--杰夫

for(i在bb[selValue]中)
{
bb_lat_long=bb[selValue][i][“bb_lat_long”]。拆分(“|”);
if(bb_lat_long.length==2)//矩形
{
lat_long=bb_lat_long[0]。拆分(“,”;
sw=新的google.maps.LatLng(lat_long[0],lat_long[1]);
lat_long=bb_lat_long[1]。拆分(“,”;
ne=新的google.maps.LatLng(lat_long[0],lat_long[1]);
边界=新的google.maps.LatLngBounds(西南、东北);
bounding_box=new google.maps.Rectangle({map:map,bounds:bounds,fillOpacity:0.05,strokeWeight:1});
}
else//多边形
{   
poly_lat_long.length=0;
对于(j=0;j
我的怀疑是,这与在新多边形中重新使用路径有关(您将得到多个多边形,所有多边形都是相同的,可能是您在局部声明poly_lat_____________________________________

在使用
poly\u lat\u long.length=0;
而不是
创建新数组(poly_lat_long=[])


可能需要说明
bb[]
sel_value
是什么。另外,拆分字符串会产生字符串,在使用
LatLng()
等中的值之前,应该
parseFloat
,因为它们应该是数字。如果在指定数字的地方使用字符串,可能会发生奇怪的事情。bb[]是一个边界框数组。[selvalue]选择边界框的类型。bb[selvalue][i][“bb_lat_long”]包含一个如上所述的字符串,如“-31,-32 | 2,25”,对于多边形,它只是有更多由“|”分隔的坐标。所有这些都有效。我可以通过firebug逐步查看代码,并查看板条和多边形的正确值。我看到它创建了多个(在本例中为3)多边形,但仅显示最后一个。如果我从bb数组中删除最后一个多边形,则会显示新的最后一个多边形,等等。哦,我添加了parseFloat,没有任何更改。您有bb[]的示例吗对于一个多边形?或者一个显示问题的地图的链接,或者一个显示问题的JSFIDLE?叮…叮…叮…我们有一个赢家!我从来都不知道这可能是一个问题。非常感谢!我永远不会找到这个。
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});
        }

    }