2009-04-21 526 views

回答

3

根据图层的不同,您将始终拥有某种您无法真正转换的底层(地图)。如果您想要在该地图上添加数据(标记,geo json东西等),则必须将其转换为基础层使用的投影。

// defining our coordinate systems 
var google = new OpenLayers.Projection("EPSG:900913"), 
    latlon = new OpenLayers.Projection("EPSG:4326"); 

// transforming the location to the right coordinate system 
var location = new OpenLayers.LonLat(10, 10).transform(latlon, google); 

// assuming you made an icon and marker layer 
var marker = new OpenLayers.Marker(location, icon);  

markerLayer.addMarker(marker); 

检查出的OpenLayers文档有关在系统之间转换位置到另一个位置:

对于这种标记可以通过easyly来完成。

2

如果地图服务器提供了不同的栅格,那么你可能会倒霉。然而,如果他们正在提供向量(例如KML文件)或JavaScript写入的地图对象(例如Dre的答案),那么您可以在不同的投影之间进行变换,以便所有数据都出现在相同的投影和坐标系统上作为底图。 OpenLayers有这个钩子(请参阅Dre的答案),但您可能需要包含提供该功能的Proj4JS库。

或者您可以自己使用Proj4JS在绘图之前转换坐标。

2

这是一个古老的问题,但我从搜索中发现了这种情况,并认为如果这对他人有帮助,我可能会发出警告。

这可能与所提问题面临的情况有所不同,但最近我遇到了类似的情况。就我而言,我需要在一张地图上显示来自两个不同WMS提供者的输出。一个在EPSG:900913提供服务​​,另一个在EPSG:3857提供服务。知道这些,我想我是否可以用服务工作的方式请求他们,以便地图能够处理输出。我的地图位于900913(因此其他服务默认使用此投影请求)。

我如何能够获得被请求正确是其他服务如下(填写您的信息):

var myLayer = new OpenLayers.Layer.WMS(
    "Name", 
    "URL", { 
     "layer": "layer" 
    }); 

myLayer.projection = "EPSG:3857"; 

通常附加?request=getCapabilities到服务网址将允许你看看有什么预测是可用来自所需层的CRS标签中的服务。

相关问题