0

有一个网页,显示来自许多来源的天气图表。你选择你的来源,图表的轮廓出现在谷歌地图上。(参见http://www.geoffschultz.org/weather_map.php Weather Charts/GMDSS/Forecasts - 应该绘制 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});
        }

    }
4

1 回答 1

0

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

在使用poly_lat_long.length = 0; 而不是creating a new array (poly_lat_long = []).

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

于 2012-08-18T20:20:10.620 回答