flex actionscript LatLngBounds无法使其工作

时间:2011-12-07 00:43:46

标签: flex actionscript google-maps-api-3 bounds

我的问题是在帖子的最后。

我已尝试过将所有标记的计时器设置为四角的各种计算,但似乎没有任何效果。

每次我向markermanager添加一个标记时,我都会在下面调用此函数

public function markerSetBounds(someLat , someLng):void{
    var bounds:LatLngBounds = new LatLngBounds();

    for(var i:int = 0; i < myMarkers.length; i++)
{
    var currentLatLon:LatLng = new LatLng(someLat , someLng);
        bounds.extend(currentLatLon);
}

googleMap.setZoom(googleMap.getBoundsZoomLevel(bounds));
googleMap.setCenter(bounds.getCenter());
}

我相信我知道为什么这不起作用。我一次只发送一套lat,lng。

但是,当我尝试以下操作时,flex告诉我它不知道myMarkers[i].lat的意思。

以下是我填充myMarkers数组的方法

var someMarker:Marker = new Marker(new LatLng(someLat , someLng), new MarkerOptions({tooltip:someAddress, hasShadow: true}));
myMarkers.push(someMarker);

这就是我想要遍历数组的方式,但flex并不了解.lat的含义。

for(var i:int = 0; i < myMarkers.length; i++)
{
    var currentLatLon:LatLng = new LatLng(myMarkers[i].lat , myMarkers[i].lng);
    bounds.extend(currentLatLon);
}

我的问题是我如何遍历myMarkers数组来设置currentLatLon。我也试过for each(var someObj:Marker in myMarkers),但一无所获。标记显示在地图上,但边界不起作用。

2 个答案:

答案 0 :(得分:0)

你有没有尝试过这样的事情:

(myMarkers[i] as Marker).lat

在运行时或编译时这是一个问题吗?

答案 1 :(得分:0)

好的,我想出了问题是什么,我必须按正确的顺序放置。

首先,声明LatLngBounds。

其次,制作标记。

第三步,设置缩放

Forth,扩展界限。

                bounds = new LatLngBounds();

            covToXML = new XML(event.result);
            xmlToList = new XMLList(covToXML);
            listToCol = new XMLListCollection(xmlToList);
            someLat = Number(listToCol.children().child("geometry").child("location").child("lat").text());
            someLng = Number(listToCol.children().child("geometry").child("location").child("lng").text());
            someAddress = String(listToCol.children().child("formatted_address").text());

            var markerOptions:MarkerOptions = new MarkerOptions();

            markerOptions.icon = new (whichIcon(GlobalVars.randomIcon));
            markerOptions.tooltip = someAddress;
            markerOptions.hasShadow = true;

            someMarker = new Marker(new LatLng(someLat , someLng), markerOptions);
            someMarker.addEventListener(MapMouseEvent.CLICK,markerClicked);

            myMarkers.push(someMarker);
            googleMap.addOverlay(someMarker);

            for each(someMarker in myMarkers)
            {
                var newLatLng:LatLng = someMarker.getLatLng();
                // Alert.show(newLatLng.toString());
                bounds.extend(newLatLng);
            }

            googleMap.setCenter(bounds.getCenter());
            googleMap.setZoom(googleMap.getBoundsZoomLevel(bounds));

感谢所有建议和问题,这些建议和问题帮助我找到了解决方案。