Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何测量当前位置和给定地址之间的距离?_Java_Android_Google Maps_Distance - Fatal编程技术网

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

Java 如何测量当前位置和给定地址之间的距离?,java,android,google-maps,distance,Java,Android,Google Maps,Distance,我写了一个android应用程序 我从服务器上得到一个地址列表 如何测量移动客户端与给定地址之间的距离 我想我得先把地址转换成坐标?您建议如何执行此操作?您可以设置LocationListner并获取移动用户的当前Lat日志,然后只需使用Location类的distanceTo方法 检查以下链接: 一, 二, 3例 如果你的服务器给你一个Lat长的地址,那么这肯定会帮助你 注意:在你的清单中,我认为一件更有用的事情是从 按照说明启用它并获取密钥。然后在浏览器中尝试以下操作: http://map

我写了一个android应用程序

我从服务器上得到一个地址列表

如何测量移动客户端与给定地址之间的距离


我想我得先把地址转换成坐标?您建议如何执行此操作?

您可以设置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,这里有一个很好的解释:

你已经上路了