我在Google地图(Android)上有一个marker
,我希望将标记移动到给定bearing
和distance
的新位置。
//lat, lng in degrees. Bearing in degrees. Distance in Km
private LatLng newPostion(Double lat,Double lng,Double bearing,Double distance) {
Double R = 6371; // Earth Radius in Km
Double lat2 = Math.asin(Math.sin(Math.PI / 180 * lat) * Math.cos(distance / R) + Math.cos(Math.PI / 180 * lat) * Math.sin(distance / R) * Math.cos(Math.PI / 180 * bearing));
Double lon2 = Math.PI / 180 * lng + Math.atan2(Math.sin( Math.PI / 180 * bearing) * Math.sin(distance / R) * Math.cos( Math.PI / 180 * lat ), Math.cos(distance / R) - Math.sin( Math.PI / 180 * lat) * Math.sin(lat2));
Double newLat = 180 / Math.PI * lat2;
Double newLng = 180 / Math.PI * lon2;
LatLng newLatLng = new LatLng(newLat, newLng);
return newLatLng;
}
LatLng newPos = newPostion(myMark.getPosition().latitude,myMark.getPosition().longitude, 90.0,3000.0);
距离是计算速度*时间。
distance = speed * time
让我们说标记代表一辆汽车,汽车行驶100公里/小时,我需要每5秒更新一次标记。
distance = 100 * (5/60)
但问题是在Google地图上显示distance
,因为Google地图已缩放。使用上面计算的距离来移动标记会进一步移动标记。
任何人都可以帮助我将实际距离转换为Google地图距离吗?
答案 0 :(得分:1)
在距离计算中,您将秒与分钟(5秒,60分钟)混合。它应该是:
distance = 100 km * (5 sec / 3600 sec)