これを GisStackExchange に投稿しましたが、うまくいきませんでした。
OpenLayers と Google マップの Base Layer との相互作用に関連していると思われる問題があります (座標系との不一致など)。これは、WMS を介して GeoServer に送信するリクエストに関連している可能性もあります。しかし、私は混乱しています。
私のセットアップ:私が言ったように、私はグーグルから来たベースレイヤーを持つolMapを持っています。マップの初期化は次のとおりです。
function initMap() {
// World Geodetic System 1984 projection (lon/lat)
var WGS84 = new OpenLayers.Projection("EPSG:4326");
// WGS84 Google Mercator projection (meters)
var WGS84_google_mercator = new OpenLayers.Projection("EPSG:900913");
var options = {
projection: WGS84_google_mercator,
displayProjection: WGS84,
};
window.map = new OpenLayers.Map('map_canvas', options);
var google_default = new OpenLayers.Layer.Google("Google Default", {wrapDateLine: false, numZoomLevels: 30, sphericalMercator: true})
var google_satellite = new OpenLayers.Layer.Google("Google Satellite", {type: google.maps.MapTypeId.SATELLITE, wrapDateLine: false})
map.addLayers([google_default]);
window.map.zoomTo(2);
window.map.setCenter(0);
// build up all controls
window.map.addControl(new OpenLayers.Control.Zoom());
window.map.addControl(new OpenLayers.Control.MousePosition())
window.map.addControl(new OpenLayers.Control.Navigation());
window.map.addControl(new OpenLayers.Control.LayerSwitcher());
}
ズームが小さい場合、サーバーは機能情報を含む応答を送信しますが、ズームインするとサーバーは応答しなくなります。
サーバー側で交差点を作るために、その通過するバッファパラメータ領域を修正しようとしました。しかし、その値が大きすぎてもズームすると良い結果が得られません:
vendorParams: {
buffer: 100, // one hundred is an excessive value
},
また、ズームすると異なるevent.xyを出力していますが、それは理にかなっていますね。
Alert は、WMSGetFeatureInfo コントロール リスナーの beforegetfeatureinfo メソッドで起動されます。
beforegetfeatureinfo function(event) {
// Code here to set the content of queryableMapLayers
// The event object will contain xy of mouse click
alert(event.xy);
}
ズームなしでは、ほぼ同じマップ位置で (1136, 273) の値と (600, 304) の大きなズームを取得します。私が言ったように、私はこの問題について混乱しています。私はそれをグーグルで検索するのに多くの時間を費やしていますが、ガイドラインは見つかりませんでした。
何かご意見は?