Newb alert:我对OpenLayers 3和一般的映射都是全新的。我的背景是在SQL Server和后端系统设计中。我没有HTML,JavaScript,Web开发等方面的经验。我确信这是一个非常简单的问题,但我似乎无法弄清楚细节。
我已经为OpenLayers.org修改了其中一个示例,但它并没有按预期运行。它使用GeoJSON对象并在地图上绘制点,但它们不会在预期的位置结束。显然存在一些转换或发生的事情。
我使用的样本在这里:GeoJSON example
我的测试地图在这里:Test Map
GeoJSON对象定义为
var geojsonObject = {
'type': 'FeatureCollection',
'crs': {
'type': 'name',
'properties': {
'name': 'EPSG:3857'
}
},
'features': [
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [0, 0]
}
},
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [-8.575653e6, 4.70681e6]
//White House, Washington DC Lon -77.03648269999997 Lat 38.89767579999999
}
}
]
};
通过一些试验和错误,我能够得到我在白宫草坪上展示的观点(NSA毫无疑问地标记了这次谈话),并且与我从不同来源获得的纬度和经度没有任何相似之处。我知道坐标的顺序是[lon,lat],但我看不出押韵或理由-77.036 = -8.575e6。另一个点[0,0]显示在我期望的位置。
我试图弄清楚自己并搜索了很多地方,但我似乎无法找到答案。
另外,如果你能指导我学习任何好的教程,我们将不胜感激。谢谢!
答案 0 :(得分:0)
您的GeoJSON数据位于EPSG:3857,与纬度/经度不同的坐标系。坐标不相等,但代表相同的地理位置。
有关EPSG:3857的信息,请参阅http://spatialreference.org/ref/sr-org/6864/。那里的地图清楚地显示了坐标参考系中给定点坐标之间的差异。
答案 1 :(得分:0)
Openlayers实际上允许您使用ol.proj
函数转换它们。
例如,要将lat / lon(EPSG:4326)转换为Spherical mercator(EPSG:3857 - 最常用的在线网络地图,以米为单位),您可以: -
var newCoordinates = ol.proj.transform(latLonCoordinate, "EPSG:4326", "EPSG:3857");
newCoordinates
将包含坐标数组中的转换值。对于“范围”也可以做同样的事情。 (使用ol.proj.transformExtent(extent, fromProj, toProj)
的地图视图左上角/右下角的框坐标。