2011-12-05 83 views
0

我已經通過javascript製作了多個標記,但在actionscript中做同樣的事情被證明是相當具有挑戰性的。flex google多個標記

我使用Google指示取回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); 
       } 
      } 
} 
+0

是什麼問題? – TMS

+0

爲什麼它只返回第一個標記或最後一個?爲什麼不兼得? – kronus

回答

0

OK,我不得不放棄舊的代碼,並使用的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); 
     } 

現在,我有問題,與設定的邊界。地圖保持以最初的中心爲中心,在添加標記之前。

準備發佈另一個問題。