gpt4 book ai didi

javascript - OpenLayers:自动将 EPSG 4326 -坐标从文本图层转换为 map 的投影 (EPSG:900913)

转载 作者:行者123 更新时间:2023-11-30 10:40:30 25 4
gpt4 key购买 nike

目前,我正在使用 Mono4Droid 实现一个 map 应用程序,并且我正在使用 WebView 来呈现由我自己的 tileserver 提供的 map 。我正在使用 OpenLayers 来显示这张 map ,现在我想使用文本层来显示一些自定义 POI。不幸的是,该 map 使用 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 提供的标记时,我必须使用正确格式的坐标。使 map 居中很容易:

var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter (lonLat, zoom);

但是我怎样才能为 TextLayer 自动执行此转换?我想将根据著名的 EPSG4326 的经纬度值放入文本层数据文件(经纬度列),而不是根据 900913 的值(我目前正在做的让它起作用)。

有没有办法让 OpenLayers 将文本图层的坐标自动转换为 map 中使用的格式?也许像 onShow 一样重写回调函数?

感谢您的帮助!否则我将不得不自己翻译 lat lon 值并将计算值放入文本文件中,这将使性能受到影响......

最佳答案

最后,我自己找到了答案,我必须说我印象非常深刻! OpenLayers 相当强大!这是我的解决方案:在 map 对象的选项中,您必须将 displayOptions 设置为图层的投影,在我的例子中,它支持 EPSG:4326:

displayProjection: new OpenLayers.Projection("EPSG:4326")

然后你只需要注意图层使用这个投影(如果它不是默认值)。就我而言,文本层在 Android 上无法正常工作(在 WebView 中):单击文本文件中的标记图像时无法打开弹出窗口。相反,我根据 sundials-Example 使用矢量层:

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 - OpenLayers:自动将 EPSG 4326 -坐标从文本图层转换为 map 的投影 (EPSG:900913),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com