Игнорировать скрытые функции, возвращаемые идентификатором

Я создаю приложение, используя JavaScript, Google Maps v2 и ESRI 10.1. у меня есть DynamicMapServiceLayer и один слой в моем картографическом сервисе ESRI. Я динамически показываю или скрываю объекты на слое, используя ESRI setLayerDefinitions функция основана на значениях фильтра, выбранных пользователем во время выполнения.

Когда пользователь нажимает на карту, я использую ESRI IdentifyTask Объект, чтобы найти то, что пользователь нажал. Я хочу показать информационное окно для функции, на которую нажал пользователь. Мой код вроде работает, но он открывает информационные окна для функций, которые отфильтрованы (не видны) на слое.

Как я могу проверить, нажал ли пользователь на видимую функцию и прекратить открывать информационные окна для скрытых функций? Или как я могу получить IdentifyTask прекратить включение скрытых объектов в объект ответа, который он возвращает?

Это моя задача вызова identifParameters настроена

// set the identify parameters
var identifyParameters = new esri.arcgis.gmaps.IdentifyParameters();
identifyParameters.geometry = latLng; // where the user clicked on the map
identifyParameters.tolerance = 3;
identifyParameters.layerIds = [OUTAGES_LAYER];
identifyParameters.layerOption = 'all';
identifyParameters.bounds = map.getBounds();
var mapSize = map.getSize();
identifyParameters.width = mapSize.width;
identifyParameters.height = mapSize.height;

// execute the identify operation
identifyTask.execute(identifyParameters, function(response, error) { 
    if (hasErrorOccurred(error)) return;
    addResultToMap(response, latLng);
});

ОБНОВИТЬ

Я обновился до карт Google v3. Теперь параметры идентификации поддерживают передачу информации layerdef следующим образом. Например, я могу ограничить операцию идентификации теми функциями, где FISCAL_YEAR = 2014. Моя проблема решена.

function identify(evt) {
    dynamicMap.getMapService().identify({
        'geometry': evt.latLng,
        'tolerance': 3,
        'layerIds': [12],
        'layerOption': 'all',
        'layerDefs': {12 : 'FISCAL_YEAR = 2014'},
        'bounds': map.getBounds(),
        'width': map.getDiv().offsetWidth,
        'height': map.getDiv().offsetHeight
    }, function(results, err) {
        if (err) {
            alert(err.message + err.details.join('\n'));
        } else {
            addResultToMap(results, evt.latLng);
        }
    });
}

0 ответов

Другие вопросы по тегам