忽略identifyTask返回的隐藏功能

时间:2013-06-06 20:51:00

标签: gis google-maps-api-2 esri arcgis-server arcmap

我正在使用javascript,google maps v2和ESRI 10.1构建应用。 我的ESRI地图服务中有一个DynamicMapServiceLayer和一个图层。我根据用户在运行时选择的过滤器值,使用ESRI setLayerDefinitions函数动态显示或隐藏图层上的要素。

当用户点击地图时,我使用ESRI IdentifyTask对象来查找用户点击的内容。我想显示用户点击的功能的信息窗口。我的代码很有用,但它会打开infowindows以获取在图层上过滤掉(不可见)的功能。

如何查看用户是否点击了可见功能并停止打开infowindows以获取隐藏功能?或者我如何让IdentifyTask停止在它返回的响应对象中包含隐藏的功能?

这是我的identifyParameters任务调用设置

// 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 个答案:

没有答案