首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >放大时,点图层WMS GetFeatureInfo失败

放大时,点图层WMS GetFeatureInfo失败
EN

Stack Overflow用户
提问于 2014-05-03 00:29:50
回答 1查看 558关注 0票数 0

我已经在GisStackExchange上发布了这篇文章,但运气不佳。

我有一个问题,我认为这与OpenLayers和我的谷歌地图基础层之间的交互有关(与坐标系不一致,或者类似的东西)。也许这也可能与im通过WMS发送给GeoServer的请求有关。但我很困惑。

我的设置:就像我说的,我有一个olMap,它的底层来自谷歌。以下是map init:

代码语言:javascript
复制
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());

}

当缩放较小时,服务器会向我发送带有特征信息的响应,但当放大时,服务器将不再响应。

我试图修复传递缓冲区参数区域,以便在服务器端创建交叉点。但我在缩放时没有好的效果,即使它的值过高:

代码语言:javascript
复制
vendorParams: {
   buffer: 100, // one hundred is an excessive value
}, 

另外,我打印出的event.xy在缩放时有所不同,但这是有意义的,不是吗?

警报在WMSGetFeatureInfo控件侦听器的beforegetfeatureinfo方法中启动:

代码语言:javascript
复制
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)。就像我说的,我对这个问题感到困惑。我花了很多时间在谷歌上搜索,但我没有找到任何指导原则。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-05-10 02:01:40

我建议您的地图对象使用正确的坐标参考,即EPSG:3857 (Web Mercator)。我也不认为地图有30个缩放级别。下面是Google卫星底图的一个示例地图对象。

代码语言:javascript
复制
//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
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23432833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档