百度地图JavascriptApi Marker平滑移动及车头指向行径(2)

只是还是那个原因,因为得到的坐标点数据是球面坐标,所以还是要先进行转为平面坐标才好计算,然后通过三角函数tan#$%^&*( 计算后得到两个点之间的角度值。此部分没有太多个性化的逻辑操作,直接参照百度大大的就行了。

/** *在每个点的真实步骤中设置小车转动的角度 *@param{BMap.Point} curPos 起点 *@param{BMap.Point} targetPos 终点 */ this.setRotation = function (curPos, targetPos, em) { var me = this; var deg = 0; curPos = map.pointToPixel(curPos); targetPos = map.pointToPixel(targetPos); if (targetPos.x != curPos.x) { var tan = (targetPos.y - curPos.y) / (targetPos.x - curPos.x), atan = Math.atan(tan); deg = atan * 360 / (2 * Math.PI); if (targetPos.x < curPos.x) { deg = -deg + 90 + 90; } else { deg = -deg; } em._newPointMark.setRotation(-deg); } else { var disy = targetPos.y - curPos.y; var bias = 0; if (disy > 0) bias = -1 else bias = 1 em._newPointMark.setRotation(-bias * 90); } return; }

参考计算方法就得了~~~

值此两个功能的最基础的及计算方法等就这么多,其他的业务逻辑需要的逻辑代码包裹着就是自己的需求实现代码了!

效果图

百度地图JavascriptApi Marker平滑移动及车头指向行径

百度地图JavascriptApi Marker平滑移动及车头指向行径

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwwdzx.html