OpenLayers:自动将 EPSG 4326 - 文本图层的坐标转换为地图的投影 (EPSG:900913)
OpenLayers: Automatically transform EPSG 4326 -Coordinates from Text Layer into map`s projection (EPSG:900913)
目前,我正在使用Mono4Droid实现一个地图应用程序,在那里我正在使用WebView来呈现由我自己的瓷砖服务器提供的地图。我正在使用 OpenLayers 来显示此地图,现在我想使用文本图层来显示一些自定义 POI。不幸的是,地图使用了 90013 投影:
map = new OpenLayers.Map ("map", {
controls:[
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.Permalink(),
new OpenLayers.Control.ScaleLine({geodesic: true}),
new OpenLayers.Control.Permalink('permalink'),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.Attribution()],
//maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
maxResolution: 156543.0339,
numZoomLevels: 19,
units: 'm',
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:900913")
} );
因此,当我想显示文本层提供的标记时,我必须使用正确格式的坐标。使地图居中很容易:
var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter (lonLat, zoom);
但是,如何为文本层自动执行此转换呢?我想根据众所周知的EPSG4326将纬度值放入文本图层数据文件(经度长度的列),而不是根据900913的值(我目前正在做什么让它工作)。
有没有办法让 OpenLayers 自动将文本图层的坐标转换为地图中使用的格式?也许像 onShow 一样覆盖一个回调函数?
感谢您的帮助!否则我将不得不自己翻译纬度值并将计算值放在文本文件中,这将使性能受到影响......
最后,我自己找到了答案,我必须说我印象非常深刻!OpenLayers非常强大!这是我的解决方案:在地图对象的选项中,您必须将 displayOptions 设置为图层的投影,在我的情况下,支持 EPSG:4326 如下:
displayProjection: new OpenLayers.Projection("EPSG:4326")
然后,您只需注意图层使用此投影(如果它不是默认值)。就我而言,文本层在Android上无法正常工作(在WebView中):单击文本文件中的标记图像时,我无法打开弹出窗口。相反,我根据日晷示例使用矢量层:
new OpenLayers.Layer.Vector("TextLayer", {
projection: map.displayProjection,
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "layerdata/chargingstationsmaptxtlayer.txt",
format: new OpenLayers.Format.Text({
extractStyles: true,
extractAttributes: true
})
})
});
在文本文件中,我现在可以使用 EPSG-4326 格式的 LatLon-值。这太容易了;-)
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 在Javascript中转换对象数组
- 将数字转换为一定数量的硬币
- 将纯文本URL转换为可单击链接
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何将TypeScript对象转换为普通对象
- 检测个位数整数时正在转换毫秒
- 从javascript到jquery的转换
- DOM事件通过JSON转换为java
- 将圆柱体转换为弯管
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- JavaScript代码问题:我正在将对象转换为数组
- 如何将字母转换为二进制代码
- OpenLayers:自动将 EPSG 4326 - 文本图层的坐标转换为地图的投影 (EPSG:900913)