我正在处理一个应用程序,在那里,我以4次/秒的速度从车辆的GPS接收到(纬度、经度)。这些坐标用于移动地图上的位置指针。我想在车辆移动时旋转地图,但我不知道如何计算旋转角度。根据我在网上的研究,我认为这可能是我需要的方位角度。因此,我有以下问题:
我有一个正在运行的代码片段来展示在OpenLayers - MapRotation OL中地图旋转的实现。
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
controls: ol.control.defaults({
attributionOptions: {
collapsible: false
}
}),
view: new ol.View({
center: [-13617070.95991734, 4951153.5532800285],
rotation: 0,
zoom: 10
})
});
$("#rotator").click(function(){
console.log("jqyery");
// get current angular orientation, and rotate by 30 degree i.e PI/6 radians
map.getView().setRotation(map.getView().getRotation()+ Math.PI/6);
});发布于 2022-11-26 00:31:09
普通二维地图的两个坐标(src_x,src_y),(dest_x,dest_y)或墨卡托投影EPSG:3857之间的旋转角/航向角/方位角可以用以下方法计算
let bearingRad = Math.atan2(dx,dy),其中dx = dest_x-src_x, dy = dest_y-src_y)
bearingRad > 0,则旋转为顺时针方向。为了旋转地图,地图需要由-1*(bearingRad)旋转,以与旅行方向对齐。开放图层地图旋转的工作示例可在这里获得:开放图层地图旋转
https://stackoverflow.com/questions/74539108
复制相似问题