Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex 4.6列表的自定义排序_Apache Flex_List_Sorting_Collections_Adobe - Fatal编程技术网

Apache flex Flex 4.6列表的自定义排序

Apache flex Flex 4.6列表的自定义排序,apache-flex,list,sorting,collections,adobe,Apache Flex,List,Sorting,Collections,Adobe,所以我的问题似乎很简单,但看在上帝的份上,我想不出来。所以我请求你的帮助。我在一个包含商店的移动应用程序中有一个简单的列表。我想把它们从地图的中心缩短一段距离 似乎我需要一个自定义排序功能,但我不确定我必须在其中做什么 我正在使用 testDist.setLatLng(propertyList.selectedItem.lat,propertyList.selectedItem.lng); dist.text=""+GeodesicCalculatorUtil.calculateGeodesi

所以我的问题似乎很简单,但看在上帝的份上,我想不出来。所以我请求你的帮助。我在一个包含商店的移动应用程序中有一个简单的列表。我想把它们从地图的中心缩短一段距离

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

我正在使用

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

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

要得到一家商店的距离,我必须将它与下一家进行比较。但是,我不知道如何在比较函数中实现它。如果有人能帮助我,我将非常高兴。

由于这似乎是使用MapQuest作为映射系统的人的常见问题,我提供了我的解决方案,用于根据到任何列表的距离对自定义POI进行排序。这是一个针对移动应用程序的解决方案,这也是我在datagrid上使用列表的原因

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


            }

对于使用MapQuest作为映射系统的人来说,这似乎是一个常见的问题,因此我提供了我的解决方案,用于根据到任何列表的距离对自定义POI进行排序。这是一个针对移动应用程序的解决方案,这也是我在datagrid上使用列表的原因

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


            }

列表的数据类型是什么?数组集合?你试着做些什么来分类它?你读过这些文档吗:我从php服务获取数据,我的列表的数据提供程序定义为:从这里开始,我使用lat和lng获取排序所需的距离。它不像ArrayCollection或XMLListCollection那样具有任何排序功能。你可以考虑切换;或者在检索数据之前在服务器端对数据进行排序。如果只使用数据库中的字段进行排序,实际上效果很好。我的问题是,我不知道如何使用自定义函数对列表进行排序。例如,我可以使用数据库中的lat对列表进行排序。不过,我想先做一些计算,然后再像lat+1那样做。在Flex中,您不需要对List类进行排序,因为它只是一个显示类。您可以根据列表的数据提供程序的数据类型对其进行排序。ArrayCollection或XMLListCollection提供了我上面链接的内置排序功能。ASyncListView不支持。要在集合类中对数据执行计算或其他处理,可以使用SortComparennction。列表的数据类型是什么?数组集合?你试着做些什么来分类它?你读过这些文档吗:我从php服务获取数据,我的列表的数据提供程序定义为:从这里开始,我使用lat和lng获取排序所需的距离。它不像ArrayCollection或XMLListCollection那样具有任何排序功能。你可以考虑切换;或者在检索数据之前在服务器端对数据进行排序。如果只使用数据库中的字段进行排序,实际上效果很好。我的问题是,我不知道如何使用自定义函数对列表进行排序。例如,我可以使用数据库中的lat对列表进行排序。不过,我想先做一些计算,然后再像lat+1那样做。在Flex中,您不需要对List类进行排序,因为它只是一个显示类。您可以根据列表的数据提供程序的数据类型对其进行排序。ArrayCollection或XMLListCollection提供了我上面链接的内置排序功能。ASyncListView不支持。要在集合类中对数据执行计算或其他处理,可以使用SortComparennction。