首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OpenLayers中计算给定经度和纬度的旋转角

问在OpenLayers中计算给定经度和纬度的旋转角
EN

Stack Overflow用户
提问于 2022-11-22 21:23:04
回答 1查看 37关注 0票数 -1

我正在处理一个应用程序,在那里,我以4次/秒的速度从车辆的GPS接收到(纬度、经度)。这些坐标用于移动地图上的位置指针。我想在车辆移动时旋转地图,但我不知道如何计算旋转角度。根据我在网上的研究,我认为这可能是我需要的方位角度。因此,我有以下问题:

  1. 这个问题需要计算的是轴承角度还是其他什么?
  2. 如果是方位角,是否只有Math.atan2(currentLatitude,currentLongitude),其中电流*是每一刻的纬度/经度。

我有一个正在运行的代码片段来展示在OpenLayers - MapRotation OL中地图旋转的实现。

代码语言:javascript
复制
  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);
});
EN

回答 1

Stack Overflow用户

发布于 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)

  1. 如果是bearingRad > 0,则旋转为顺时针方向。
  2. 否则,旋转是(bearingRad + Math.PI)*(-1)逆时针方向.

为了旋转地图,地图需要由-1*(bearingRad)旋转,以与旅行方向对齐。开放图层地图旋转的工作示例可在这里获得:开放图层地图旋转

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74539108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档