Ich möchte einige Daten mit der Projektion WGS-84 auf dem Google-Karten-Layer in OpenLayers überlagern. Aber ich kann sie einfach nicht am richtigen Ort machen. Ich habe folgendes gemacht:
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));
Ich habe zwar eine veclayer
4326-Projektion zugewiesen , diese wird jedoch immer noch als 900913 interpretiert, und das Anzeigekoordinationssystem ist ebenfalls 900913, obwohl ich displayProjection auf 4326 gesetzt habe. Welchen Fehler mache ich?
preFeatureInsert
bedeutet. Ich kann sie ohnehin nicht in der offiziellen API-Dokumentation findenSie haben ein Leerzeichen nach dem Doppelpunkt.
Projection("EPSG: 4326")
sollte eigentlichProjection("EPSG:4326")
kein platz vorher sein4326
.quelle
Ich habe mein altes Code-Snippet gepostet. Ich erinnere mich, dass der Clou in den Projektionen ist. addTransform sollte Ihr Problem lösen. (proj4)
quelle
Sie könnten dorthin fallen, weil Sie auf Google Maps nach einer leicht versetzten Vektordarstellung suchen, während dies auf anderen Basis-Layern in Ordnung ist und die Umwandlung von EPSG: 4326 in EPSG: 900913 oder EPSG: 3857 nicht alles löst.
Es gibt einen Fehler in Google Maps, der die Div-Größe beim Initiieren des OpenLayers-Kartenobjekts nicht gut auswertet, wenn es noch nicht sichtbar ist. Nach dem Aufruf von transform () & redraw () müssen Sie möglicherweise
myMapObject.updateSize();
Google den tatsächlichen Anteil Ihrer Karte auf dem Bildschirm mitteilen.Wenn Sie nach einer generischen Lösung suchen, um Ebenen von einer Projektion in eine andere zu transformieren, können Sie diese Funktion verwenden:
Et voilà!
quelle
Bei Yahoo können Sie diese Optionen ausprobieren:
quelle