我在 GisStackExchange 上发布了这个,但没有运气。
我有一个问题,我认为这与 OpenLayers 和我的谷歌地图基础层之间的交互有关(与坐标系统不一致,或类似的东西)。也许这也可能与我通过 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,但这是有道理的,不是吗?
在 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) 大缩放大约在相同的地图位置。就像我说的,我对这个问题感到困惑。我花了很多时间在谷歌上搜索它,但我没有找到任何指导方针。
有什么想法吗?