0

ポリゴン領域を定義する一連の緯度と経度の座標を読み取っています。それらはエリア ID にキー付けされており、SQL データベースから取得します。たとえば、エリア ID 153 には 20 の座標があり、エリア ID 77 には 11 の座標がある場合があります。これらをエリア ID でインデックス付けされた 2 次元配列に保存し、各座標ペアを 1 つの Google LatLng オブジェクトに結合したいと考えています。後で、1 つの行、つまり 1 つの領域の座標セットを取得し、それらを座標の配列を受け取り、マップ上に多角形を描画する関数に送信したいと考えています。ここに私が持っているものがあります:

private var coordsFromSql:ArrayCollection = new ArrayCollection();

var polyArray:Array = new Array();

for each(var item:COORDINATES in coordsFromSql)
{
    // add coordinates to the array for each Area id                
    polyArray[item.AREA_ID].push( new LatLng(item.LATITUDE, item.LONGITUDE) );
}

したがって、ここで最初の問題が発生します。可変数の新しい項目を 2 次元配列に既知のインデックスに追加する方法がわかりません。つまり、polyArray を 2-D スプレッドシートのように考えると、たとえば、「行」77、つまり polyArray[77] に値を追加するにはどうすればよいですか? 上記のコードを実行すると、実行時エラー #1010 'A term is undefined and has no properties' が発生します

質問の 2 番目の部分は、1 つの「行」を新しい配列として抽出する方法です。上記の例を使用して drawPolygon 関数を呼び出すことはできますか?

var polyArraySlice:Array = polyArray[77].slice();                   
drawPolygon(color,  polyArraySlice );                   
4

1 に答える 1

2

読み込みコードは近いようですが、完全ではありません。for ループでは、次のことを行っています。

polyArray[item.AREA_ID].push(/*...*/)

しかし、実際には配列に何も入れません。

したがって、負荷はおそらく次のようになります。

var polyArray:Array = []

for each(var item:COORDINATES in coordsFromSql)
{
    // add coordinates to the array for each Area id                
    var id:Number = item.AREA_ID;
    if(polyArray[id] == null) { polyArray[id] = [] }
    polyArray[id].push( new LatLng(item.LATITUDE, item.LONGITUDE) );
}

個々の場所の 1 つのコピーを取得すると、次のように機能します。

var polyArraySlice:Array = polyArray[77].slice();                   
drawPolygon(color,  polyArraySlice );         
于 2010-01-20T22:59:36.280 に答える