我有两个基础层的 OpenLayers 地图:MetaCarta (EPSG:4326) 和 Google 地图 (Mercator)。sphereMercator = false,单位是度。地图上还有一些标记、框和矢量数据。
当我在基础层(具有不同的投影)之间切换时,简单的几何图形(例如标记或框)会自动重新投影并正确显示。然而,矢量图层(折线)只是移动,而不是重新投影。我认为我需要调用某种“重建”函数或添加一些参数,以便 OpenLayers 在基础层投影发生变化时自动执行此操作。但我不知道该怎么做。
我阅读了 Spherical Mercator ( 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);