GoogleMaps V3仅显示1个多边形

GoogleMaps V3 Only Displays 1 Polygon

本文关键字:1个 多边形 显示 V3 GoogleMaps      更新时间:2023-09-26

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

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

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

--Geoff

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});
        }
    }

我的怀疑是,这与重新使用新多边形中的路径有关(你最终得到了多个多边形,只是所有的多边形都是一样的,也许如果你本地声明poly_lat_long(使用var),或者创建一个createPolygon函数,在路径上获得函数闭包。

我以前在使用poly_lat_long.length = 0;清除路径数组时看到过这种行为而不是CCD_ 2。

Google Maps API v3小组讨论类似问题的线程