Bagaimana cara menambahkan baselayer dengan dua proyeksi berbeda?
Saya telah menambahkan overlayer dengan proyeksi yang berbeda (EPSG: 4326), tetapi saya perlu menambahkan lapisan dasar dengan berbagai proyeksi
- Google Maps
- Lapisan vektor saya dengan proyeksi EPSG: 4326
Saya bisa melihat semuanya baik-baik saja dengan Google Maps tetapi ketika saya beralih lapisan dasar ke EPSG: lapisan 4326 semuanya putih.
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);
}
sumber
Atur layer WMS Anda tanpa referensi ke 900913 (dengan asumsi data Anda ada di 4326). Kemudian ketika Anda menambahkan layer ke OpenLayers pastikan bahwa Anda telah menetapkan proyeksi peta ke 900913 (atau pastikan untuk menambahkan Google Maps terlebih dahulu). Kemudian ketika Anda menambahkan lapisan WMS, OpenLayers akan meminta data dalam proyeksi peta (900913) dan GeoServer akan memproyeksikan ulang dari 4326 menjadi 900913 dengan cepat.
sumber
Secara umum ini tidak mungkin karena OpenLayers menetapkan proyeksi peta dari lapisan dasar.
Salah satu cara yang mungkin dilakukan adalah menggunakan WMS cascading seperti GeoServer untuk memproyeksi ulang salah satu lapisan dasar dari satu ke proyeksi lainnya.
sumber
Saya baru saja menerapkan tambalan ke ol 2.13.1 (dari tag)
File tambalan terakhir dari trac tidak berfungsi ketika tidak ada pembatasanExtent diberikan, jadi saya memperbaikinya juga.
Anda bisa mendapatkannya di sini, bersama dengan contoh teks:
https://github.com/glferri/ol2-reproj-2.13.1/blob/master/OL.Reproject_2.13.1_fixRestrictedExtent.patch
sumber