1

所以我的问题似乎很简单,但看在上帝的份上,我无法弄清楚。所以我请求你的帮助。我在包含商店的移动应用程序中有一个简单的列表。我想将它们缩短到与地图中心的距离。

似乎我需要一个自定义排序功能,但我不确定我必须在其中做什么。

我在用

testDist.setLatLng(propertyList.selectedItem.lat,propertyList.selectedItem.lng);

dist.text=""+GeodesicCalculatorUtil.calculateGeodesicDistance(FlexGlobals.topLevelApplication.currentLatLng2,testDist,DistanceUnits.KILOMETERS)

要获得一家商店的距离,我必须将其与下一家进行比较。但是我不知道如何在比较功能中做到这一点。如果有人可以帮助我,我会很高兴。

4

1 回答 1

1

由于这对于使用 MapQuest 作为地图系统的人来说似乎是一个常见问题,因此我提供了我的解决方案,用于按与任何列表的距离对自定义 POI 进行排序。这是移动应用程序的解决方案,这就是我在数据网格上使用列表的原因。

protected function sort_clickHandler():void
            {               

                var dataSortField:SortField = new SortField();
                dataSortField.numeric = true;

                /* Create the Sort object and add the SortField object created earlier to the array of fields to sort on. */
                var numericDataSort:Sort = new Sort();

                numericDataSort.compareFunction=sortFunction;

                /* Set the ArrayCollection object's sort property to our custom sort, and refresh the ArrayCollection. */
                getAllMarkersResult.lastResult.sort = numericDataSort;
                getAllMarkersResult.lastResult.refresh();
            }

            private function sortFunction(a:Object, b:Object, array:Array = null):int
            {

                var aPoi:LatLng = new LatLng(a.lat,a.lng);
                var bPoi:LatLng = new LatLng(b.lat,b.lng);

                var i:Number=GeodesicCalculatorUtil.calculateGeodesicDistance(FlexGlobals.topLevelApplication.currentLatLng2,aPoi,DistanceUnits.KILOMETERS);
                var j:Number=GeodesicCalculatorUtil.calculateGeodesicDistance(FlexGlobals.topLevelApplication.currentLatLng2,bPoi,DistanceUnits.KILOMETERS);


                return ObjectUtil.numericCompare(i, j);


            }
于 2012-05-14T13:50:09.823 回答