Flex谷歌多个标记



我已经通过javascript制作了多个标记,但试图在actionscript中做同样的事情被证明是相当具有挑战性的。

我使用谷歌的方向检索LatLng添加标记,但它只返回一个标记。不是第一个就是第二个

在我的init函数中是标记地址数组和从方向返回LatLng的调用。基本上把开始和结束的位置作为相同的位置标记。

markers = ['11030 Hartsook st, North Hollywood, CA','15713 Ventura blvd, Encino, CA'];
for (var i:Number = 0; i < markers.length; ++i) {
from.text=markers[i];
textInput.text=markers[i];
processForm(evt);
}
private function processForm(event:Event):void {
var directions:Directions = new Directions();
directions.addEventListener(DirectionsEvent.DIRECTIONS_SUCCESS, onDirectionsSuccess);
directions.addEventListener(DirectionsEvent.DIRECTIONS_FAILURE, onDirectionsFail);
directions.load("from: " + from.text + " to: " + textInput.text);
}
private function onDirectionsSuccess(event:DirectionsEvent):void{
            googleMap.clearOverlays();
            directionsSteps.removeAll();
            directions = event.directions;
            var directionsPolyline:IPolyline = directions.createPolyline();
            googleMap.addOverlay(directionsPolyline);
            /*************************************
             * zoomout after retrieving directions
             * ***********************************/
            var directionsBounds:LatLngBounds = directionsPolyline.getLatLngBounds();
            googleMap.setCenter(directionsBounds.getCenter());
            googleMap.setZoom(googleMap.getBoundsZoomLevel(directionsBounds));
            /*************************************
             * create markers
             * ***********************************/             
            startLatLng = directions.getRoute(0).getStep(0).latLng;
            var endLatLng:LatLng = directions.getRoute(directions.numRoutes-1).endLatLng;
            googleMap.addOverlay(new Marker(startLatLng));
            googleMap.addOverlay(new Marker(endLatLng));
            myMarkers.push(new Marker(startLatLng));
            mgr.addMarkers(myMarkers, myMarkers.length);
            mgr.refresh();
            /*************************************
             * create steps
             * ***********************************/ 
            for (var r:Number = 0 ; r < directions.numRoutes; r++ ) {
                var route:Route = directions.getRoute(r);
                for (var s:Number = 0 ; s < route.numSteps; s++ ) {
                    var step:Step = route.getStep(s);
                    directionsSteps.addItem(step);
                }
            }
}

好了,我不得不放弃旧代码,并使用httpservice来检索每个地址的地址:

            private function makeMarkers():void {
            for (var x:Number= 0; x < markers.length; x++) {
                loadMyXml("http://maps.googleapis.com/maps/api/geocode/xml?address="+markers[x]+"&sensor=false");
            }
        }
        private function loadMyXml(src:String):void {
            httpService.url = src;
            httpService.send();
        }

            public function httpService_resultHandler(event:ResultEvent):void
        {
            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());
            // Alert.show(someLat +", "+ someLng + someAddress);
            var someMarker:Marker = new Marker(new LatLng(someLat , someLng), new MarkerOptions({tooltip:someAddress, hasShadow: true}));
            //googleMap.addOverlay(someMarker);
            myMarkers.push(someMarker);
            mgr.addMarkers(myMarkers, 1);
            mgr.refresh();
            markerSetBounds(someLat , someLng);
        }

现在,我有设置边界的问题。在添加标记之前,地图一直以初始中心为中心。

准备发布另一个问题

最新更新