我正在尝试编写一个在Android中使用Google Maps V2 API的简单应用程序。 在计时器中,我正在从googleMap mylocation函数中读取lat long值。
altitude = googleMap.getMyLocation().getAltitude();
latitude = googleMap.getMyLocation().getLatitude();
longitude = googleMap.getMyLocation().getLongitude();
我使用addPolyline()
方法绘制lat。
我面临的问题是在前景中使用此应用程序在路上行走时,我正在直线行走,但情节正在附近的建筑物中进行。我已经确保2个纬度,长度在10米的距离。
我使用公式
public double calcDistance(double lat1, double lng1, double lat2,
double lng2) {
int r = 6371; // average radius of the earth in km
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lng2 - lng1);
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
+ Math.cos(Math.toRadians(lat1))
* Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2)
* Math.sin(dLon / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = r * c;
return d;
}
问题 - 如何获得直线,如何获得准确性或保证金或错误,以便在路上行走时我不会进入建筑物
答案 0 :(得分:0)
地图中存在错误,GPS读数存在错误。由于卫星被阻挡以及可见卫星的多径,附近的大型建筑物将增加GPS读数的误差。您可能需要考虑将初始实验限制在没有建筑物的区域。
关于直线,如果您有幸拥有地图数据,您可以将GPS读数预测到路上最近的点。
答案 1 :(得分:0)
如果您完全依赖于从LocationManager
谷歌地图位置返回的位置,然后绘制出关于有时由于GPS锁定不良而导致关闭的点数,那么你真的没有什么可以做的关于那个。我们非常欢迎您不要使用谷歌地图位置,并使用Fused location API来获得更好的结果。
谷歌地图API不提供道路节点,所以几乎不可能分辨出一个点离道路有多远,试图理顺道路