在我的应用程序中,用户必须能够将平面图添加到地图中。用户使用简单的表单上传PNG图像,然后该图像必须显示为地图背景。所以我们在这里拥有的是:
- 用户可以随时更改的 PNG 图像。我从服务器收到此图像的 URL。
- 图像的尺寸(宽度和高度)。
Mapbox 有sources
并且layers
我需要使用它来将此图像添加为地图的背景,并且根本不能显示实际的世界地图。
我见过很多这样的例子(这个正在使用mapbox-gl-js
):
...
"sources": {
"overlay": {
"type": "image",
"url": "https://www.mapbox.com/mapbox-gl-js/assets/radar.gif",
"coordinates": [
[-80.425, 46.437],
[-71.516, 46.437],
[-71.516, 37.936],
[-80.425, 37.936]
]
}
},
...
而这个(这个正在使用deck.gl
层):
import DeckGL from '@deck.gl/react';
import {BitmapLayer} from '@deck.gl/layers';
const App = ({data, viewport}) => {
const layer = new BitmapLayer({
id: 'bitmap-layer',
bounds: [-122.5190, 37.7045, -122.355, 37.829],
image: 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/website/sf-districts.png'
});
return (<DeckGL {...viewport} layers={[layer]} />);
}
但它们总是有图像的预定义坐标。因为用户可以随时更新我的图像,所以我需要以某种方式计算这些坐标,同时考虑图像的纵横比。我数学不太好,请你帮帮我好吗?deck.gl
能够指定图层的坐标系,甚至是 4x4 投影矩阵,但我不太明白如何在我的情况下使用它。