2010-08-24 54 views
2

我有兩個基本圖層:MetaCarta(EPSG:4326)和Google地圖(墨卡託)的OpenLayers地圖。 sphericalMercator = false,單位是度數。地圖上還有一些標記,框和矢量數據。如何在不同投影的基本地圖之間切換時重新投影矢量圖層

當我在基礎層(具有不同的投影)之間切換時,簡單的幾何圖形(例如標記或框)將自動重新投影並正確顯示。然而矢量圖層(多段線)只是移動,而不是重新投影。我認爲我需要調用某種「重建」功能或添加一些參數,以便OpenLayers在基礎層投影更改時自動執行此操作。但我不知道如何做到這一點。

我讀過關於球形墨卡託(http://docs.openlayers.org/library/spherical_mercator.html)並查看了OpenLayers的例子,但沒有找到解決方案。

我的代碼的一部分是低於(在vector.json所有的座標爲度):

var metaCarta = new OpenLayers.Layer.WMS("MetaCarta", 
    "http://labs.metacarta.com/wms/vmap0?", 
    {layers: "basic"} 
); 

var gmap = new OpenLayers.Layer.Google(
    "Google Streets", 
    {numZoomLevels: 40} 
); 

map.addLayers([metaCarta, gmap]); 
map.setCenter(new OpenLayers.LonLat(139.8, 35.7), 11); 


// Load vector data 
var jsonFormat = new OpenLayers.Format.GeoJSON(); 

var vectorLayer = new OpenLayers.Layer.Vector("vector", { 
    style: {strokeColor: "gray",strokeWidth: 2} 
}); 

OpenLayers.loadURL("vector.json", {}, null, function(response) { 
    var features = jsonFormat.read(response.responseText); 
    vectorLayer.addFeatures(features); 
}); 

map.addLayer(vectorLayer); 

回答

1

您需要定義預測和的OpenLayers合適的變換。反過來,您將需要包含Proj4JS庫(OpenLayers使用它來執行這些投影轉換)