Quiero superponer algunos datos cuya proyección es WGS-84 en la capa de mapa de Google en OpenLayers. Pero no puedo hacerlos en el lugar correcto. Hice lo siguiente:
map = new OpenLayers.Map('map', {
numZoomLevels: 20,
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG: 4326")
});
googlelayer = new OpenLayers.Layer.Google("Google street", {sphericalMercator: true});
map.addLayer(googlelayer);
veclayer = new OpenLayers.Layer.Vector("vector", {
projection: map.displayProjection
};
var geojson_format = new OpenLayers.Format.GeoJSON();
veclayer.addFeatures(geojson_format.read(jsonData));
Aunque he asignado la veclayer
proyección 4326, pero todavía se interpreta como 900913, y el sistema de coordinación de visualización también es 900913, aunque configuré displayProjection en 4326. ¿Qué error cometo?
preFeatureInsert
significa la propiedad , de todos modos, no puedo encontrarla en el documento oficial de API ~Tienes un espacio después del colon.
Projection("EPSG: 4326")
en realidad debería serProjection("EPSG:4326")
, no hay espacio antes4326
.fuente
Publiqué mi antiguo fragmento de código. Recuerdo que la nube está en las proyecciones. addTransform debería resolver su problema. (proj4)
fuente
Puede caer allí porque está buscando una representación vectorial ligeramente desplazada en Google Maps, mientras que está bien en otras capas base y la transformación de EPSG: 4326 a EPSG: 900913 o EPSG: 3857 no resuelve todo.
Hay un error en Google Maps que no evalúa bien el tamaño div al iniciar el objeto OpenLayers Map si aún no está visible. Entonces, después de las llamadas transform () y redraw (), es posible que deba hacer
myMapObject.updateSize();
para que Google sepa la proporción real de su mapa en la pantalla.Si está buscando una solución genérica para transformar capas de una proyección a otra, puede usar esta función:
Et voilà!
fuente
Para Yahoo puedes probar estas opciones:
fuente