0

我正在阅读一组定义多边形区域的纬度和经度坐标。它们被键入一个区域 ID,我从 SQL 数据库中检索它们。例如,区域 ID 153 可能有 20 个坐标,区域 ID 77 可能有 11 个坐标。我希望将它们保存在由区域 ID 索引的二维数组中,并且每个坐标对都组合成一个 Google LatLng 对象。稍后我希望只检索一行,即一个区域的坐标集,并将它们发送到一个函数,该函数接受坐标数组并在地图上绘制多边形。这是我所拥有的:

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

所以这是第一个问题出现的地方。我不知道如何将可变数量的新项目添加到二维数组到已知索引中。即考虑像二维电子表格一样的 polyArray 我如何例如将值添加到“行”77 即 polyArray[77] ?如果我运行上面的代码,我会收到运行时错误 #1010 'A term is undefined and has no properties'

问题的第二部分是如何将一个“行”提取为一个新数组?使用上面的例子调用一个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) );
}

获取其中一个单独位置的副本将像您一样工作:

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