本工程为基于高德地图Android SDK进行封装,实现了点沿线平滑移动的效果。
基于3D地图SDK进行封装,实现了Marker点在线上进行平滑移动的例子。
###1:配置搭建AndroidSDK工程###
###2:思路介绍###
- 计算斜率
/**
* 算斜率
*/
private double getSlope(LatLng fromPoint, LatLng toPoint) {
if (toPoint.longitude == fromPoint.longitude) {
return Double.MAX_VALUE;
}
double slope = ((toPoint.latitude - fromPoint.latitude) / (toPoint.longitude - fromPoint.longitude));
return slope;
}
- 计算移动距离
/**
* 计算每次移动的距离
*/
private double getMoveDistance(double slope) {
if (slope == Double.MAX_VALUE||slope==0) {
return DISTANCE;
}
return Math.abs((DISTANCE * slope) / Math.sqrt(1 + slope * slope));
}
- 计算marker角度
/**
* 根据点获取图标转的角度
*/
private double getAngle(int startIndex) {
if ((startIndex + 1) >= mVirtureRoad.getPoints().size()) {
throw new RuntimeException("index out of bonds");
}
LatLng startPoint = mVirtureRoad.getPoints().get(startIndex);
LatLng endPoint = mVirtureRoad.getPoints().get(startIndex + 1);
return getAngle(startPoint, endPoint);
}