如何考虑俯仰和方位来获取mapbox-gl地图视口边缘坐标?

Ran*_*iev 5 javascript mapbox-gl-js

我无法理解如何获取用户更改俯仰和方位后的地图视口坐标

这是我的代码的示例 - https://jsfiddle.net/5uwdfhdp/6/ 我使用.getBounds()方法,但它似乎工作错误。

在用户旋转地图之前单击地图后,我得到一个正确的矩形,之后 - 一些荒谬的事情。

我可能使用了错误的坐标,但在我看来,mapbox 方法无法按预期工作。

std*_*b-- 7

问题在于,当您使用坐标的正交反射构建矩形时,您没有考虑旋转和俯仰。尝试通过容器的像素坐标获取地理多边形:

const canvas = map.getCanvas()
const w = canvas.width
const h = canvas.height
const cUL = map.unproject ([0,0]).toArray()
const cUR = map.unproject ([w,0]).toArray()
const cLR = map.unproject ([w,h]).toArray()
const cLL = map.unproject ([0,h]).toArray()
const coordinates = [cUL,cUR,cLR,cLL,cUL]
const polygon = turf.polygon([coordinates])
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/7vzyrx9d/

https://github.com/mapbox/mapbox-gl-js/issues/2375

  • 请务必除以设备的像素比。否则,如果不是 1:1,bbox 将不准确。const w = canvas.width / window.devicePixelRatio; const h = canvas.height / window.devicePixelRatio; (4认同)