0

多くのソースからの天気図を表示するWebページがあります。ソースを選択すると、グラフの概要がGoogleマップに表示されます。(http://www.geoffschultz.org/weather_map.php Weather Charts / GMDSS / Forecastsを参照してください-3つのポリゴンを描画する必要があります)これまで、すべてのチャートは長方形でしたが、非長方形のチャートの必要性に出くわしました。これを念頭に置いてjsをコーディングしましたが、最後に描画されたポリゴンのみが表示されるため、困惑しました。複数のポリゴンに関して私が見逃しているものはありますか?

コードは非常に単純です。バウンディングボックス座標の配列を取得します。単純な長方形の場合、配列要素は「-31、-32 | 2,25」のようになり、多角形の場合は、「|」で区切られたより多くの座標があります。座標が2つある場合は長方形を描画し、そうでない場合はポリゴンを描画して1番目の点で閉じます。

長方形に最適なので、何が間違っていますか?

-ジェフ

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 = [])

同様の問題について議論しているGoogleMapsAPIv3グループのスレッド

于 2012-08-18T20:20:10.620 に答える