【问题标题】:Geo location - how does it work? [closed]地理位置 - 它是如何工作的? [关闭]
【发布时间】:2012-07-19 04:18:13
【问题描述】:

例如我得到 6 个移动设备的“纬度”和“经度”GEO 位置:A、B、C、D、E、F (设备是 iphone、ipad、android 等)

现在如何找到设备 A 范围内 10 米半径内的所有设备? (只是一个例子)有没有我可以使用的库?

【问题讨论】:

    标签: c# android iphone titanium


    【解决方案1】:

    计算A到其他位置的距离,然后过滤掉那些太远的? Android 上有this helpful method,其他平台上可能也有类似的。您也可以始终在您的应用程序中实现基础数学。

    【讨论】:

    • 谢谢,...我必须在用 C# 编写的服务器上进行计算。所以需要一个 c# 库。
    • 您可能想在您的问题中明确指定这一点,并可能更改标题——这太模糊了。顺便说一句,Android 是开源的,所以如果一切都失败了,您可以随时查看代码并将其移植到 C#。
    【解决方案2】:

    至于数学......这个网站有一些关于计算与纬度/经度有关的各种事情的详细信息

    http://www.movable-type.co.uk/scripts/latlong.html

    【讨论】:

      【解决方案3】:

      您可以使用以下方法来查找两个经纬度之间的距离,

      public static float calculateDistance (float lat1, float lng1, float lat2, float lng2 ) 
      {
          double earthRadius = 3958.75;
          double dLat = Math.toRadians(lat2-lat1);
          double dLng = Math.toRadians(lng2-lng1);
          double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
          Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
          Math.sin(dLng/2) * Math.sin(dLng/2);
          double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
          double dist = earthRadius * c;
      
          int meterConversion = 1609;
      
          return new Float(dist * meterConversion).floatValue();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 2011-02-08
        • 2020-11-02
        相关资源
        最近更新 更多