我使用以下npm模块转换为/从lat / lng和像素:
https://www.npmjs.com/package/viewport-mercator-project
以下是用法:
// Create a new viewport.
var ViewportMercator = require('viewport-mercator-project');
// NOTE: `ViewportMercator` objects are immutable by design.
var viewport = ViewportMercator({
center: [0, 0],
zoom: 0,
tileSize: 512,
dimensions: [600, 800]
});
var lnglat = [0, 0];
var pixels = viewport.project(lnglat); // returns [300, 400]
viewport.unproject(pixels); // returns [0, 0]
然而,在我的用例中,这似乎总是失败,我的中心是-122~:
ViewportMercator({
center: [37.7833, -122.4167],
zoom: 13,
tileSize: 512,
dimensions: [1000, 778]
});
> viewport.project([37.7833, -122.4167])
[ 500, NaN ] // should return (500, 389)
我知道这与我的lng值(在center
中)超出-90<范围之外的事实有关。 lng< 90,但我该如何解决这个问题呢?我尝试的视口转换绝对有效......
答案 0 :(得分:0)
在我看来,你只是颠覆了经度和纬度。
ViewportMercator需要[longitude, latitude]
中center
形式的数组以及project
的参数。
经度 -122.4167和纬度 37.7833点在旧金山。
http://www.openstreetmap.org/search?query=37.7833%2C%20-122.4167#map=10/37.7833/-122.4167