GeoJSON形状扭曲在Leaflet.js球形墨卡托WMS地图
GeoJSON shape distorted on Leaflet.js spherical mercator WMS map
我有一个简单的WMS图层在球形墨卡托投影(由OSM-Mapnik-TileCache服务器堆栈渲染,一切都在EPSG:900913/EPSG:3857)。
第一:我不明白为什么,如果单张使用CRS EPSG:3857,单位是米,我还必须提供坐标,如maxBounds和center,在WGS84格式,使用度。是API不一致吗?
第二:我需要渲染一个以WGS84坐标表示的GeoJSON特征(EPSG:4326),但形状明显扭曲(见下图)。我是否应该将从EPSG:4326转换为EPSG:3857?如何?如果我这样做,我将得到以米表示的坐标,而传单仍然期望度。我怎样才能解决这个问题?我在OpenLayers和GeoJSON覆盖中使用简单的wms层进行了双重检查,它工作得很好,所以我证明了失真不在数据中。
什么线索吗?
下面是测试GeoJSON,希望有人能理解问题的原因:
{
"type": "Polygon",
"coordinates": [
[
[14.740017498458682, 40.673078870109705],
[14.740132563378529, 40.673283531348574],
[14.741625561383819, 40.67246759585111],
[14.741671820229074, 40.672308542443076],
[14.74151049646397, 40.672262934612235],
[14.740017498458682, 40.673078870109705]
]
]
}
宣传单上的示例图片
OpenLayers的示例图像
第一:我不明白为什么,如果传单使用CRS EPSG:3857,其单位是米,我仍然需要提供坐标,如maxBounds和center,在WGS84格式,使用度。是API不一致吗?
数据中的投影与显示投影不同。在WGS84中,传单的输入是纬度,在EPSG:3857中,默认输出是墨卡托。EPSG:3857很少用于数据编码。
但形状明显扭曲(见下图)。
这就是投影:这是扭曲的,因为投影是扭曲。
我应该将形状从EPSG:4326转换为EPSG:3857吗?
传单已经在内部做了,你不需要手动做。
我用OpenLayers中的一个简单的wms层和GeoJSON覆盖进行了双重检查,它工作得很好,所以我证明了失真不在数据中。
你的OpenLayers地图有EPSG:4326作为它的显示投影,而你的传单地图有EPSG:3857:这就是为什么一个是不同的形状。
相关文章:
- 谷歌地图固定位置覆盖
- 不显示带有本地json文件数据的谷歌地图脚本
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 谷歌地图标记不会显示
- 无法在JS中显示谷歌地图
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 需要帮助谷歌地图方向面板在FancyBox中显示
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 在谷歌地图上获取事件的x,y坐标
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 模拟谷歌地图中的点击
- 如何知道哪个标记被谷歌地图点击了
- 谷歌地图JS API+JSON-多个标记没有显示
- 缓存谷歌地图数据
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 谷歌地图API 3 + WMS
- 从谷歌地图引擎发布的WMS不显示
- 如何在传单地图中显示一个弹出窗口,显示Geoserver WMS层的特征属性
- GeoJSON形状扭曲在Leaflet.js球形墨卡托WMS地图