我正在尝试制作一个android应用程序来查找驾驶起点和终点之间的距离。所以我需要为我驾驶的路径找到准确的距离。为了达到这个目的,我每隔5秒就会获得我的位置,并使用distanceTo()
和distanceBetween()
方法Location
谷歌地图类别计算距离。请帮助我决定使用哪种方法。哪一种更准确的方法来查找Android中谷歌地图中两个位置之间的距离?距离或距离?
回答
这两种方法都会告诉你鸟儿飞行的距离,而不是公路。要通过公路获取的距离,你要问谷歌,这种方式:
public String getDistance(final double lat1, final double lon1, final double lat2, final double lon2){
String parsedDistance;
String response;
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://maps.googleapis.com/maps/api/directions/json?origin=" + lat1 + "," + lon1 + "&destination=" + lat2 + "," + lon2 + "&sensor=false&units=metric&mode=driving");
final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
InputStream in = new BufferedInputStream(conn.getInputStream());
response = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
JSONObject jsonObject = new JSONObject(response);
JSONArray array = jsonObject.getJSONArray("routes");
JSONObject routes = array.getJSONObject(0);
JSONArray legs = routes.getJSONArray("legs");
JSONObject steps = legs.getJSONObject(0);
JSONObject distance = steps.getJSONObject("distance");
parsedDistance=distance.getString("text");
} catch (ProtocolException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
return parsedDistance;
}
parsedDistance变量会给你的距离,以公里,两个特定点之间。
编辑
或者,你可以给控制权交给谷歌地图应用程序,如果已安装,这样一来:
String uri = "http://maps.google.com/maps?f=d&hl=en&saddr=" + origin.getLatitude() + "," + origin.getLongitude() + "&daddr=" + destination.getLatitude() + "," + destination.getLongitude();
Uri urimap = Uri.parse(uri);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, urimap);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}
这样一来,手机会打开谷歌地图应用,并显示两个设定点之间的路线。
我不知道哪种方法更准确,但根据我以前的经验distanceBetween()效果很好。我已经使用这种方法来达到和你一样的观点。我建议你使用这个。
谢谢,我会尝试 –
正如我在我的回答中所说的,你所要求的两种方法不会让你远离公路。如果直线距离是您所追求的,请使用其中一种方法。如果你需要通过公路行驶,它会给你错误的结果。 – Fustigador
老线程但是在未来回复任何人的帮助。
在Android SDK中,distanceTo和distanceBetween返回基于Inverse/Vincenty公式的距离,参见details here,这与半岛距离公式相比更精确一些。
除了这些,上面返回的距离不返回旅行距离[即对导航不够准确]。因此,使用基于距离矩阵API [webservice/restful and JS apis]的谷歌地图来获得旅行精确的距离。但请注意,此api的免费版本有限制,并且它们有商业用途的高级版本。
两种方法distanceBetween()和distanceTo()有 不同的目的。
由于distanceBetween()文档说,它为我们提供了以米为单位的距离以及它们之间最短距离的方位。它为我们提供了一个方向,distanceTo()不给予。
根据distanceBetween() docs-
所计算的距离被存储在结果[0]。如果结果长度为2 或更大,则初始方位存储在结果[1]中。如果结果 的长度大于等于3,则最终方位存储在结果[2]中。
所以你会得到这个函数的距离和方位。
但是,另一方面,当我们需要一个方便的工具来获取两个位置之间的距离并完成很多工作。我们将使用distanceTo()。
该函数直接返回两个位置之间的距离,以米为单位的浮点值。
这对于Android的发现在谷歌手机地图的两个 位置之间的距离更准确的方法是什么?距离或距离?
您的问题的答案是结果将在两个函数中相同。它有不同的建议但决不会给出不同的结果。
所以你必须决定你需要哪些功能。并使用适当的功能。希望这个答案可以帮助你。
- 1. 谷歌地图距离API
- 2. 两个GEO位置之间的距离
- 3. 使用iphone中的谷歌地图计算两个位置之间的距离
- 4. 距离之间的两个
- 5. 如何计算谷歌地图中两点之间的距离?
- 6. 计算距离位置的距离 - iPhone
- 7. 道路距离,两地之间的实际距离
- 8. 使用地理位置确定距离固定点的距离
- 9. 获取两个地理点之间的距离 - 离线地图
- 10. 两个地址之间的距离
- 11. 两个地理点之间的距离?
- 12. 哪个更准确JSON或球形间距获取两个地址之间的距离
- 13. 的Xcode在谷歌两个地点之间的距离映射
- 14. 使用谷歌地图api工作两点之间的距离?
- 15. 发行代码为找到两两地之间的行车距离与谷歌的距离矩阵
- 16. 两个位置之间的距离 - Google地图
- 17. 如何显示地图上两个位置之间的距离?
- 18. Android谷歌地图点之间的距离
- 19. 编辑两个图之间的距离
- 20. 更好的方法来设置flexbox图像之间的距离
- 21. 如何获得谷歌地图API中的精确距离Android
- 22. 沿着距离两个给定点的距离找到一条中间点
- 23. 如何获得距离眩晕两点之间的距离
- 24. 距离Cell塔的距离
- 25. 谷歌地图与一些距离放置位置
- 26. 谷歌地图API,距地铁站的距离
- 27. 用户的位置距离我目前的位置的距离
- 28. 两点之间的测地距离
- 29. 谷歌API - - 地方搜索RankBy距离
- 30. 每个文档中两点之间的距离和距离小于英里的距离
重要的是要注意,这种方法会给出由Google计算的路线中的距离。这可能不是什么OP之后,因为他/她的路线可能不同于谷歌的 –
是的,的确如此。但是,Google会将您送回最短路线。看起来对我很好。 – Fustigador