Google maps 放大时点图层WMS GetFeatureInfo失败
我把这个贴在交易所里,运气不好 我有一个问题,我认为与OpenLayers和我的GoogleMap基础层之间的交互有关(与坐标系不一致,或者类似的东西)。也许这也可能与im通过WMS发送到GeoServer的请求有关。但我很困惑 我的设置:就像我说的,我有一个olMap,它有一个来自谷歌的基础层。 以下是映射初始化:Google maps 放大时点图层WMS GetFeatureInfo失败,google-maps,openlayers,geoserver,wms,getfeatureinfo,Google Maps,Openlayers,Geoserver,Wms,Getfeatureinfo,我把这个贴在交易所里,运气不好 我有一个问题,我认为与OpenLayers和我的GoogleMap基础层之间的交互有关(与坐标系不一致,或者类似的东西)。也许这也可能与im通过WMS发送到GeoServer的请求有关。但我很困惑 我的设置:就像我说的,我有一个olMap,它有一个来自谷歌的基础层。 以下是映射初始化: function initMap() { // World Geodetic System 1984 projection (lon/lat) var WGS84
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);
}
在没有缩放的情况下,我会在相同的地图位置获得(1136273)值和(600304)大缩放值。就像我说的,我对这个问题感到困惑。我花了很多时间在谷歌上搜索,但没有找到任何指导方针
有什么想法吗 我建议对地图对象使用正确的坐标参考,即EPSG:3857(Web Mercator)。我也不认为地图有30个缩放级别。下面是谷歌卫星底图的地图对象示例
//define map object with base layers
map = new OpenLayers.Map('OpenLayers_canvas', {
projection: 'EPSG:3857',
layers:
[
new OpenLayers.Layer.Google('Google Satellite', { type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22 })
],
center: new OpenLayers.LonLat(-99.1638182, 19.3880964).transform('EPSG:4326', 'EPSG:3857'),
zoom: 10
});