Точка слоя WMS GetFeatureInfo не работает при увеличении

Я отправил это в GisStackExchange без удачи.

У меня есть проблема, которая, как мне кажется, связана с взаимодействием между OpenLayers и моим базовым слоем карты Google (несоответствия с системами координат или что-то в этом роде). Возможно, это также может быть связано с запросом, который я отправляю в GeoServer через WMS. Но я в замешательстве.

Моя настройка: Как я уже сказал, у меня есть olMap с базовым слоем, который приходит из Google. Вот карта инициализации:

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, который отличается при масштабировании, но это имеет смысл, не так ли?

Оповещение запускается в методе beforegetfeatureinfo прослушивателя элемента управления WMSGetFeatureInfo:

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) с большим увеличением примерно в том же месте на карте. Как я уже сказал, я запутался в проблеме. Я трачу много времени на поиск в Google, но я не нашел никаких указаний.

Какие-нибудь мысли?

1 ответ

Я бы порекомендовал использовать правильную координатную ссылку для вашего объекта карты, которая является EPSG:3857 (Web Mercator). Я также не думаю, что на карте есть 30 уровней масштабирования. Ниже приведен пример объекта карты для базовой карты Google Satelite.

//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
});
Другие вопросы по тегам