【发布时间】:2012-07-02 10:00:59
【问题描述】:
目前,我正在使用 Mono4Droid 实现地图应用程序,并且我正在使用 WebView 来呈现由我自己的 tileserver 提供的地图。 我正在使用 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")
} );
所以当我想显示 TextLayer 提供的标记时,我必须使用正确格式的坐标。使地图居中很容易:
var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter (lonLat, zoom);
但是我怎样才能为 TextLayer 自动进行这种转换呢?我想根据众所周知的 EPSG4326 将经纬度值放入文本层数据文件(经纬度列),而不是根据 900913 的值(我目前正在做的工作)。
有没有办法让 OpenLayers 将 Text Layer 的坐标自动转换为地图中使用的格式?也许像 onShow 这样的回调函数?
感谢您的帮助! 否则我将不得不自己翻译纬度值并将计算值放入文本文件中,这将使性能受到影响......
【问题讨论】:
标签: javascript openlayers openstreetmap