Newb警告:我对OpenLayers 3和一般的映射完全陌生。我的背景是SQL Server和后端系统设计。我没有在超文本标记语言,JavaScript,网页开发等经验。我相信这是一个非常简单的问题,但我似乎不能弄清楚细节。
我已经为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
                  }
              }
            ]
        };通过一个小小的试错,我能够在白宫草坪上展示我的观点(美国国家安全局无疑已经标记了这次对话),并且与我从不同来源获取的纬度和经度没有任何相似之处。我知道坐标的顺序是lon,lat,但我看不出-77.036 = -8.575e6的押韵或原因。另一个点0,0显示在我期望的位置。
我试着自己解决这个问题,也找了很多地方,但我似乎找不到答案。
另外,如果你能指导我到任何好的教程,将不胜感激。谢谢!
发布于 2015-07-24 17:31:22
您的GeoJSON数据采用与纬度/经度不同的坐标系EPSG:3857。坐标不相等,但代表相同的地理位置。
有关EPSG:3857的信息,请参阅http://spatialreference.org/ref/sr-org/6864/。那里的地图清楚地显示了在坐标参考系中给定点坐标之间的差异。
发布于 2015-07-24 18:01:21
Openlayers实际上允许您使用ol.proj函数对其进行转换。
例如,要从经度/经度(EPSG:4326)转换为球形墨卡托( EPSG:3857 -大多数在线web地图使用的地图,以米为单位),您可以执行以下操作:-
var newCoordinates = ol.proj.transform(latLonCoordinate, "EPSG:4326", "EPSG:3857");
然后,newCoordinates将在坐标数组中包含转换后的值。使用ol.proj.transformExtent(extent, fromProj, toProj)可以对“范围”(地图视图左上角/右下角的框坐标)执行相同的操作。
https://stackoverflow.com/questions/31600577
复制相似问题