Wie füge ich einen Baselayer mit zwei verschiedenen Projektionen hinzu?
Ich habe eine Überlagerung mit einer anderen Projektion hinzugefügt (EPSG: 4326), aber ich muss eine Basisschicht mit verschiedenen Projektionen hinzufügen
- Google Maps
- Meine Vektorebene mit EPSG: 4326-Projektion
Ich kann sehen, dass mit Google Maps alles in Ordnung ist, aber wenn ich die Basisebene auf EPSG: 4326 umschalte, ist alles weiß.
window.onload = function init(){
var lon = 84;
var lat = 28;
var zoom = 8;
var url = "http://10.6.7.6/geoserver/wms";
var mapControls = [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher({'ascending':false}),
new OpenLayers.Control.ScaleLine(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.OverviewMap(),
new OpenLayers.Control.KeyboardDefaults()
];
var map = new OpenLayers.Map(
'map',
{
numZoomLevels: 21,
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
controls: mapControls
});
var dsb = new OpenLayers.Layer.WMS(
"Nepal Border",
url,
{layers: 'GisData:IR'}
);
var gmap_gs = new OpenLayers.Layer.Google(
"Google Streets",// the default
{'sphericalMercator': true}
);
var dG = new OpenLayers.Layer.WMS(
"2G Down Sites",
url,
{layers: 'GisData:dG', transparent: "true",format: "image/png"},
{
isBaseLayer: false,
buffer: 0
});
map.addLayers([dsb, dG,gmap_gs]);
var proj = new OpenLayers.Projection("EPSG:4326");
var point = new OpenLayers.LonLat(lon,lat);
point.transform(proj, map.getProjectionObject());
map.setCenter(point, zoom);
}
quelle
Richten Sie Ihre WMS-Schicht ohne Verweis auf 900913 ein (vorausgesetzt, Ihre Daten befinden sich in 4326). Wenn Sie dann den Layer zu OpenLayers hinzufügen, stellen Sie sicher, dass Sie die Projektion der Karte auf 900913 eingestellt haben (oder fügen Sie zuerst Google Maps hinzu). Wenn Sie dann den WMS-Layer hinzufügen, fordert OpenLayers die Daten in der Kartenprojektion (900913) an und GeoServer projiziert im laufenden Betrieb von 4326 auf 900913.
quelle
Im Allgemeinen ist dies nicht möglich, da OpenLayers die Projektion der Karte von der Basisebene aus festlegt.
Eine mögliche Lösung besteht darin, ein kaskadierendes WMS wie GeoServer zu verwenden, um eine der Basisschichten von einer zur anderen Projektion neu zu projizieren.
quelle
Ich habe den Patch gerade auf ol 2.13.1 (vom Tag) angewendet.
Die letzte Patch-Datei von trac funktionierte nicht, wenn kein eingeschränkter Text angegeben wurde, daher habe ich sie ebenfalls behoben.
Sie können es hier zusammen mit einem Textbeispiel erhalten:
https://github.com/glferri/ol2-reproj-2.13.1/blob/master/OL.Reproject_2.13.1_fixRestrictedExtent.patch
quelle