У меня есть карта OpenLayers с двумя базовыми слоями: MetaCarta (EPSG: 4326) и карта Google (Mercator).sphericalMercator = 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);