我已经通过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);
}
现在,我有设置边界的问题。在添加标记之前,地图一直以初始中心为中心。
准备发布另一个问题