如何将矢量图层坐标转换为Openlayers中的Map纬度和经度

Jen*_*nny 21 latitude-longitude openlayers proj4js

我很困惑.我有一点意见:

x= -12669114.702301
y= 5561132.6760608
Run Code Online (Sandbox Code Playgroud)

我通过DrawFeature控制器在矢量图层上绘制了一个正方形.

这些数字似乎......呃...很大,但它们看起来很有效,因为如果我后来绘制一个具有相同点的正方形,它处于相同的位置,所以我认为它们必须是正确的.

问题是当我尝试将此点转换为纬度和经度时.

我正在使用:

map.getLonLatFromPixel(pointToPixel(points[0]));
Run Code Online (Sandbox Code Playgroud)

其中points [0]是几何Point,pointToPixel函数占据任意点并将其转换为像素(因为getLonLatFromPixel需要一个像素).它通过简单地获取点的x,并使其成为像素x,等等来实现这一点.

我得到的纬度和经度是以下顺序:

lat: -54402718463.864
lng: -18771380.353223
Run Code Online (Sandbox Code Playgroud)

这显然是错误的.我真的很困惑.我尝试使用以下方法投影此对象:

.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
Run Code Online (Sandbox Code Playgroud)

但是我真的没有得到它,而且非常确定我做错了,无论如何.

我的代码在这里:http://pastie.org/909644

我有点不知所措.坐标似乎是一致的,因为我可以重复使用它们来获得相同的结果......但它们似乎比我在openLayers网站上看到的任何示例都要大......

ame*_*der 34

根据您的代码,您使用的投影是EPSG:900913,这是Google使用的投影.此投影的单位为米,您为该点获得的值完全正确:

x= -12669114.702301 (longitude)
y= 5561132.6760608 (latitude)
Run Code Online (Sandbox Code Playgroud)

这个值不是像素,而是EPSG:900913投影中的坐标,并且是正确的(只要它们应该在爱达荷州,如果没有其他地方有问题)

要检查它,您可以访问http://proj4js.org/并将您的坐标从EPSG:900913转换为WGS84(lat/lon),它将为您提供:

x = -113.8085937334033 (longitude)
y = 44.615123313472 (latitude)
Run Code Online (Sandbox Code Playgroud)

这是您可能期望的值.如果您想从点坐标获取它们,请使用以下内容:

point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
Run Code Online (Sandbox Code Playgroud)

这会将坐标从Google投影转换为WGS84(纬度/经度).