Je veux superposer certaines données dont la projection est WGS-84 sur la couche de carte Google dans OpenLayers. Mais je ne peux tout simplement pas les faire au bon endroit. J'ai fait comme suit:
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));
Bien que j'aie attribué une veclayer
projection 4326, mais elle est toujours interprétée comme 900913, et le système de coordination d'affichage est également 900913, bien que je règle displayProjection sur 4326. Quelle erreur est-ce que je fais?
preFeatureInsert
signifie la propriété , de toute façon, je ne la trouve pas dans le document officiel de l'API ~Vous avez un espace après les deux points.
Projection("EPSG: 4326")
devrait en fait êtreProjection("EPSG:4326")
, pas d'espace avant4326
.la source
J'ai publié mon ancien extrait de code. Je me souviens que le clou est dans les projections. addTransform devrait résoudre votre problème. (proj4)
la source
Vous pouvez y tomber parce que vous recherchez une représentation vectorielle légèrement décalée sur Google Maps alors qu'elle convient aux autres couches de base et que la transformation d'EPSG: 4326 en EPSG: 900913 ou EPSG: 3857 ne résout pas tout.
Il y a un bug sur Google Maps qui n'évalue pas bien la taille div lors du lancement de l'objet OpenLayers Map s'il n'est pas encore visible. Ainsi, après les appels transform () et redraw (), vous devrez peut-être faire
myMapObject.updateSize();
pour que Google sache la proportion réelle de votre carte à l'écran.Si vous cherchez une solution générique pour transformer des couches d'une projection à une autre, vous pouvez utiliser cette fonction:
Et voilà!
la source
Pour Yahoo, vous pouvez essayer ces options:
la source