JavaScript、Google マップ v2、および ESRI 10.1 を使用してアプリを構築しています。DynamicMapServiceLayer
ESRI マップ サービスに と 1 つのレイヤーがあります。setLayerDefinitions
実行時にユーザーが選択したフィルター値に基づい て、ESRI 関数を使用してレイヤー上のフィーチャを動的に表示または非表示にします。
ユーザーがマップをクリックすると、ESRIIdentifyTask
オブジェクトを使用して、ユーザーがクリックしたものを見つけます。ユーザーがクリックした機能の情報ウィンドウを表示したいと考えています。私のコードは機能していますが、レイヤーで除外されている (表示されていない) フィーチャの情報ウィンドウが開きます。
ユーザーが表示されている機能をクリックしたかどうかを確認し、非表示の機能の情報ウィンドウを開かないようにするにはどうすればよいですか? 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 にアップグレードしました。現在、identify パラメーターは、次のようにレイヤー定義情報を渡すことをサポートしています。たとえば、識別操作を 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);
}
});
}