private float getdistanceInMiles(GeoPoint p1,GeoPoint p2) { double lat1 = ((double)p1.getLatitudeE6()) / 1e6; double lng1 = ((double)p1.getLongitudeE6()) / 1e6; double lat2 = ((double)p2.getLatitudeE6()) / 1e6; double lng2 = ((double)p2.getLongitudeE6()) / 1e6; float [] dist = new float[1]; Log.i("destination coordinates","Latitude:" + lat2 + ",Longitude: " + lng2); Location.distanceBetween(lat1,lng1,lat2,lng2,dist); return dist[0] * 0.000621371192f;}
Documentation说,distanceBetween()“计算两个位置之间的距离(以米为单位),以及可选择的最短路径之间的初始和最终轴承.然而,distanceBetween()与真实的GPS设备或Google Navigation应用程序返回的结果之间的差异相当大.例如,我的方法将返回6.2英里,而谷歌地图显示相同位置的10英里.我仔细检查起始点p1和终点p2的坐标,它们似乎是正确的.那么distanceBetween()方法是如何工作的,还是我做错了?顺便说一下,有没有办法使用Google Place API将距离检索为JsON响应?
距离由谷歌地图计算:6.1英里
和结果
Location.distanceBetween(41.742964,-87.995971,41.811511,-87.967923,dist) is
4.947700
解决方法 Google Navigation通常会按照路线列表中的步骤进行驾驶或步行距离,而不是直线距离,这是distanceBetween()报告的距离. 总结以上是内存溢出为你收集整理的android – distanceBetween()返回不准确的结果?全部内容,希望文章能够帮你解决android – distanceBetween()返回不准确的结果?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)