私は openLayers を使用して、WMS に由来するウルグアイのレイヤー全体を表示しています。2 つの異なる基本レイヤーを使用できるオプションを追加しようとしています。それらの 1 つは、球状メルカトル 900913 にある Google 衛星レイヤーです。次に、UTM21S 32721 にあるウルグアイの地図があります。私の問題は、ベース レイヤーを変更しようとしたときのようです。Google サテライトを表示していたときにマップに追加した wms レイヤー (ウルグアイのルートなど) が消えているようです。別の方法で、UTM21S にレイヤーをロードして Google サテライトに変更しようとすると、同じことが起こります。
function mapBaseLayerChanged(event) {
var pseudo = new OpenLayers.Projection('EPSG:900913');
var utm21s = new OpenLayers.Projection('EPSG:32721');
var baseLayer = "EPSG:900913";
if(event.layer.name == "Google Satellite"){
map.projection = pseudo;
map.maxExtent = new OpenLayers.Bounds(-6522200,-4170000,-5890000,-3510000);
}else{
baseLayer = "EPSG:32721";
map.projection = utm21s;
map.maxExtent = new OpenLayers.Bounds(300000, 6100000, 900000, 6750000);
}
for(i = 0 ; i < map.layers.length; i++){
if (map.layers[i].visibility && !map.layers[i].isBaseLayer && !map.layers[i].isVector) { // Refresh visible non base
if(baseLayer == "EPSG:900913"){
map.layers[i].projection = pseudo;
}else{
map.layers[i].projection = utm21s;
}
map.layers[i].redraw(true); // Other layer
}
alert(map.layers[i].projection);
}
//alert(map.getProjection());
map.zoomToMaxExtent();
}
このコードを実行すると、レイヤーの投影が変わるように見えますが、同じ問題が発生します..よろしくお願いします!!
アップデート:
これで動作させようとしましたが、何もしませんでした:
if(baseLayer == "EPSG:900913"){
map.layers[i].addOptions({
srs: 'EPSG:900913',
format:'png',
trnsparent: true,
},true);
//map.layers[i].projection = pseudo;
}else{
map.layers[i].addOptions({
srs: 'EPSG:32721',
format:'png',
trnsparent: true,
},true);
//map.layers[i].projection = utm21s;
}
パラメーター srs を射影に変更し、それでうまくいきました。現在の関数のコードは次のとおりです。
function mapBaseLayerChanged(event) {
var pseudo = new OpenLayers.Projection('EPSG:900913');
var utm21s = new OpenLayers.Projection('EPSG:32721');
var baseLayer = "EPSG:900913";
if(event.layer.name == "Google Satellite"){
map.projection = pseudo;
map.maxExtent = new OpenLayers.Bounds(-6522200,-4170000,-5890000,-3510000);
}else{
baseLayer = "EPSG:32721";
map.projection = utm21s;
map.maxExtent = new OpenLayers.Bounds(300000, 6100000, 900000, 6750000);
}
for(i = 0 ; i < map.layers.length; i++){
if (map.layers[i].visibility && !map.layers[i].isBaseLayer && !map.layers[i].isVector) { // Refresh visible non base
if(baseLayer == "EPSG:900913"){
map.layers[i].addOptions({
projection: pseudo,
format:'png',
trnsparent: true,
},true);
}else{
map.layers[i].addOptions({
projection: utm21s,
format:'png',
trnsparent: true,
},true);
}
}
}
map.zoomToMaxExtent();
}