【问题标题】:flex google multiple markersflex google 多个标记
【发布时间】:2012-01-13 12:23:26
【问题描述】:

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

我正在使用 googles 方向来检索 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);
                }
            }
}

【问题讨论】:

  • 为什么它只返回第一个标记或最后一个?为什么不两者兼而有之?

标签: apache-flex actionscript google-maps-api-3 google-maps-markers


【解决方案1】:

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

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

现在,我在设置边界时遇到了问题。地图始终以初始中心为中心,在添加标记之前。

准备发布另一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2015-02-17
    相关资源
    最近更新 更多