如何使用谷歌地点api找到距离

use*_*593 5 android

我正在使用 Google pLaces api 开发一个应用程序。我能够获取使用我的应用程序的用户附近的咖啡馆列表。结果列表包括地点的详细信息,例如地点名称、地址、纬度经度值和电话号码。我想知道的是如何请求 place api 返回用户与结果列表中每个条目之间的距离。我浏览了在 stackoverflow 上发布的几个讨论类似主题的链接。我也浏览了谷歌的文档,但它没有提到关于获得这些距离的任何内容。我想避免使用任何数学公式,如大圆算法,因为在这种情况下,返回的距离将是直线距离,这将不是距离的准确估计。

我浏览的一些链接是: 如何在不嵌入谷歌地图的情况下使用地理定位或类似 API 找到一个地方到另一个地方的距离?

使用谷歌地点 Api 在 Android 中以公里为单位查找距离

如何在android中获得距离公里?

shr*_*ari 5

我认为正如你所说 - 你想克制自己不使用

任何数学公式,所以你也可以尝试这个-

您可以获取距位置地址的距离

http://maps.googleapis.com/maps/api/distancematrix/xml?origins="+a+"&destinations="+b+"&mode=driving&language=en-EN&sensor=false with a=addressFrom, b=addressTo
Run Code Online (Sandbox Code Playgroud)

如果您有位置的经纬度,您可以通过以下方式获取该位置的地址:

 double latiTude = 10.3929393;
 double longiTude = 150.93984884;

 Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());
  GeoPoint p= new GeoPoint((int) (latiTude * 1E6), (int) (longiTude * 1E6));
  List<Address> address = geocoder.getFromLocation(
                                                    p.getLatitudeE6() / 1E6,
                                                    p.getLongitudeE6() / 1E6, 1);
    if (address.size() > 0) 
    {
    String addressFroLatLong= "";
    for (int i = 0; i < address.get(0).getMaxAddressLineIndex(); i++) 
    {   addressFroLatLong+= address.get(0).getAddressLine(i) + "\n";
    }   
   }
Run Code Online (Sandbox Code Playgroud)

如果有帮助请点赞。没有其他的。谢谢,很高兴能帮助您享受..


shr*_*ari 0

可以使用此处描述的方程找到两点之间的距离:http://williams.best.vwh.net/avform.htm#Dist请记住,使用弧度,而不是度数!

您似乎担心在每个版本中更新地图密钥?我在市场上有一个基于地图的应用程序,您将获得 1 个产品密钥和 1 个调试密钥(我相信它是每个开发人员的,但如果不是,它是每个应用程序的)。它与您用来签署 apk 的密钥有关。我的意思是,如果您获得了 prod api 密钥,并且只开发了这个应用程序,您可以发布许多更新,而无需再次触摸该密钥(假设您不在本地进行调试密钥测试) 。如果您担心这一点,可以将两者都保留在 AndroidManifext.xml 文件中,并注释掉不相关的文件,具体取决于您是部署到设备还是模拟器。