在任意浮点缩放级别转换为web mercator中的lat / lng和像素?

时间:2015-11-15 01:09:42

标签: javascript projection mercator

我使用以下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,但我该如何解决这个问题呢?我尝试的视口转换绝对有效......

1 个答案:

答案 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