所以我的问题似乎很简单,但是对于上帝的爱,我无法弄明白。所以我在寻求你的帮助。我在包含商店的移动应用程序中有一个简单的列表。我想通过距地图中心的距离来缩短它们。
似乎我需要一个自定义排序功能,但我不确定必须做什么。
我正在使用
testDist.setLatLng(propertyList.selectedItem.lat,propertyList.selectedItem.lng);
dist.text=""+GeodesicCalculatorUtil.calculateGeodesicDistance(FlexGlobals.topLevelApplication.currentLatLng2,testDist,DistanceUnits.KILOMETERS)
获得商店的距离,我必须将它与下一个商店进行比较。但是我无法弄清楚如何在比较功能中做到这一点。如果有人能帮助我,我会很高兴。
答案 0 :(得分: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);
}