Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何计算地图中不同标记的距离,然后选择最少的一个大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我必须从地图上的不同标记距离到设备的当前位置,并选择最短的位置.我有标记的纬度和长度,并且可以动态地获取当前位置lat和long.

假设我在地图上有5个标记,Bangalore(Lat:12.971599,Long:77.594563),Delhi(Lat:28.635308,Long:77.224960),Mumbai(Lat:19.075984,Long:72.877656),Chennai(Lat:13.052414,Long: 80.250825),加尔各答(Lat:22.572646,Long:88.363895).

现在假设用户正站在海得拉巴附近(Lat:17.385044,Long:78.486671).当用户点击按钮时,应用程序应该计算每个标记的距离,然后拿起并返回最短的标记,这里将是班加罗尔.

在本数据库的帮助下,有一种可能的方法.有人可以帮忙吗?

任何人都可以建议我一个很好的方式来做到这一点,或者想出一个很好的代码,如果可以的话. Thanx提前.

@R_404_1964@

你的评论我看到你最多期望70-80个地点.
这不是很多.

您可以简单地对所有标记进行强力搜索,并采取最小限度.

迭代所有标记,并搜索最小距离:

List<Marker> markers = createMarkers(); // returns an ArrayList<Markers> from your data source
    int minIndex = -1;
    double minDist = 1E38; // initialize with a huge value that will be overwritten
    int size = markers.size();
    for (int i = 0; i < size; i++) {
        Marker marker = markers.get(i);
        double curDistance = calcDistance(curLatitude,curLongitude,marker.latitude,marker.longitudE);
      if (curDistance < minDist) {
         minDist = curDistance;  // update neares
         minIndex = i;           // store index of nearest marker in minIndex
      }
    }

    if (minIndex >= 0) {
       // Now nearest maker found:
       Marker nearestMarker = markers.get(minIndeX);
       // TODO do something with nearesr marker
    } else {
      // list of markers was empty
    }

对于calcDistance,请使用android提供的距离计算方法. (例如LOCATIOn.distanCETo())
对于70-80标记,不需要使其更快更复杂.
如果你有几千点,那么值得投资一个更快的解决方案(使用空间索引和自己的距离计算,避免sqrt计算).

在最近的制造商搜索的开始和结束时,只需以毫秒为单位打印出当前时间,您将看到它足够快.

大佬总结

以上是大佬教程为你收集整理的android – 如何计算地图中不同标记的距离,然后选择最少的一个全部内容,希望文章能够帮你解决android – 如何计算地图中不同标记的距离,然后选择最少的一个所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。