Java 如何测量当前位置和给定地址之间的距离?
我写了一个android应用程序 我从服务器上得到一个地址列表 如何测量移动客户端与给定地址之间的距离Java 如何测量当前位置和给定地址之间的距离?,java,android,google-maps,distance,Java,Android,Google Maps,Distance,我写了一个android应用程序 我从服务器上得到一个地址列表 如何测量移动客户端与给定地址之间的距离 我想我得先把地址转换成坐标?您建议如何执行此操作?您可以设置LocationListner并获取移动用户的当前Lat日志,然后只需使用Location类的distanceTo方法 检查以下链接: 一, 二, 3例 如果你的服务器给你一个Lat长的地址,那么这肯定会帮助你 注意:在你的清单中,我认为一件更有用的事情是从 按照说明启用它并获取密钥。然后在浏览器中尝试以下操作: http://map
我想我得先把地址转换成坐标?您建议如何执行此操作?您可以设置LocationListner并获取移动用户的当前Lat日志,然后只需使用Location类的distanceTo方法 检查以下链接: 一, 二, 3例 如果你的服务器给你一个Lat长的地址,那么这肯定会帮助你
注意:在你的清单中,我认为一件更有用的事情是从 按照说明启用它并获取密钥。然后在浏览器中尝试以下操作: http://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=API_KEY 你会得到一大堆信息。这包括协调: 界限:{ 东北部:{ 纬度:45.5110114, 液化天然气:-73.5530088 }, 西南部:{ 拉脱维亚:43.6533103, 液化天然气:-79.3827675 } 但也包括路线长度。这是步行距离: 腿:[ { 距离:{ 文字:542公里, 价值:542358 }, 好了,我可以从中获得bird flys距离,虽然如果这是您唯一的问题,那么这个api可能有点过分,但我可以获得关于最佳路线长度的更有用的信息。希望这有帮助: 请记住:
距离矩阵API必须与谷歌地图上的信息显示相关;例如,在请求并在地图上显示这些目的地之前,确定彼此之间在特定驾驶时间内的始发地-目的地对。禁止在不显示谷歌地图的应用程序中使用该服务。可以使用地址获取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值,以便获得两个位置之间的距离。第一个重要步骤是找到用户位置。要做到这一点,请查看 对于如何做到这一点的不同策略 您将得到一个用户位置的对象 下一步是获取地址的坐标。为此,您需要使用Geocoder类。创建一个新的实例,并使用getFromLocationNameaddress,1.get0获取一个Location对象,该对象是与地址最接近的结果,用服务器提供的任何地址替换地址 您可能需要反复使用此选项以获得正确的结果 最后一步很简单,您可以使用usersLocation.distanceToaddressLocation,usersLocation和addressLocation分别是用户和远程获取的地址的位置对象
这将为您提供一个浮点值,即以米为单位的距离。首先,如果您可以控制数据库,MongoDB有一些非常好的基于位置的排序算法。根据您获得的地址是相同还是不同,您还可以将lat/long插入到具有该地址的数据库中,这样您就不必这样做了每次都查一下 也就是说,您可以使用Google地理编码API将地址转换为lat和long。您可以在这里找到一个使用PHP和cURL的不错的示例: 结合使用java.net.Connection,这里有一个很好的解释: 你已经上路了