如何测量当前位置与给定地址之间的距离?

时间:2014-08-01 13:10:11

标签: java android google-maps distance

我写了一个Android应用程序

我从服务器获取地址列表。

如何衡量移动客户端与指定地址之间的距离?

我想我首先必须将地址转换为坐标?你会怎么建议这样做?

6 个答案:

答案 0 :(得分:2)

您可以使用地址获取lat / lng。

从给定地址获取lat / lng的代码:

 Geocoder coder = new Geocoder(this);
 List<Address> address;

 try {
   address = coder.getFromLocationName(strAddress,5);
   if (address == null) {
       return null;
   }
   Address location = address.get(0);
   lat = location.getLatitude(); // get lat
   lng = location.getLongitude();  // get lng


  return p1;
  }

之后,您可以获取当前位置。

最后你需要使用distanceTo()方法,传递所有这些src / dest lat / lng值,这样你就可以获得2个位置之间的距离。

答案 1 :(得分:1)

首先,如果您可以控制数据库,MongoDB对基于位置的东西有一些非常好的排序算法。根据您获得的地址是相同还是不同,您还可以使用地址将lat / long插入数据库,这样您就不必每次都查找它。

话虽这么说,您可以使用Google Geocoding API将地址转换为lat和long。你可以在这里使用cURL找到一个不错的例子:http://www.techrecite.com/get-latitude-longitude-of-an-address-using-google-geocoding-api/

将它与使用java.net.Connection相结合,这里有一个很好的解释:Using java.net.URLConnection to fire and handle HTTP requests

你正在路上。

答案 2 :(得分:0)

您可以设置LocationListner并获取移动用户的当前Lat-Log,然后只使用distanceTo类的Location方法。

检查此链接:

1)http://developer.android.com/reference/android/location/LocationManager.html

2)http://developer.android.com/reference/android/location/LocationListener.html

3)http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/(示例)

我的服务器为您提供Lat-Long的地址,这对您有帮助。

注意在清单中添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

答案 3 :(得分:0)

我认为更有用的方法是从Google Directions API

获取方向

按照说明启用它并获取密钥。然后在浏览器中尝试这样的事情:

http://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=API_KEY

你得到了一大堆信息。这包括coords:

"bounds" : { "northeast" : { "lat" : 45.5110114, "lng" : -73.5530088 }, "southwest" : { "lat" : 43.6533103, "lng" : -79.3827675 } 但也包括路线长度。这是步行距离:

"legs" : [ { "distance" : { "text" : "542 km", "value" : 542358 },

我们走了,我可以从这里得到鸟飞的距离(虽然这可能是你的唯一问题)但是我可以得到更有用的信息最佳路线< /强>

答案 4 :(得分:0)

希望这有帮助:

https://developers.google.com/maps/documentation/distancematrix/

请记住:

距离矩阵API必须与Google地图上的信息显示相关;例如,在请求并在地图上显示那些目的地之前,确定彼此在特定驾驶时间内的起始 - 目的地对。禁止在不显示Google地图的应用程序中使用该服务。

答案 5 :(得分:0)

第一步,必不可少的步骤是找到用户位置。为此,请查看http://developer.android.com/guide/topics/location/strategies.html

有关如何执行此操作的不同策略。

您最终会得到用户位置的Location个对象。

下一步是获取地址的坐标。为此,您需要使用Geocoder类。创建它的新实例,并使用&#34; getFromLocationName(&#34;地址&#34;,1).get(0)&#34;获取一个Location对象,该对象是&#34;地址&#34;最接近的结果。 (替换&#34;地址&#34;使用您从服务器获得的任何地址)。

您可能需要使用此方法才能获得正确的结果。

最后一步很简单,你可以使用&#34; usersLocation.distanceTo(addressLocation)&#34;,&#34; usersLocation&#34;和&#34; addressLocation&#34;分别是用户的位置对象和远程获取的地址。

这会给你一个浮点数,即以米为单位的距离。