2

ポップアップを定義したい動的レイヤーがあります。

DynamicLayer1 = new esri.layers.ArcGISDynamicMapServiceLayer(
                "http://testServer/arcgis/rest/services/TestMap/MapServer");

URL で識別されるレイヤー リソースに対してクエリを実行するために、新しい queryTask オブジェクトを作成しました。

dojo.connect(map, "onClick", executeQueryTask);
query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = layersInfoWindow[layerId]['outFields'];
infoTemplate = new esri.InfoTemplate()


function executeQueryTask(evt) {
        query.geometry = evt.mapPoint;
        queryTask[activeLayer].execute(query, showResults);
}

ポップアップを機能させるために 2 回クリックする必要があるのはなぜですか? 1 回のクリックでリージョンが強調表示され、ポップアップを取得するには別のクリックが必要です。

4

1 に答える 1

4

初めてクリックすると、マップ クリック イベントが発生し、executeQueryTask が呼び出されます。queryTask が完了するまで、サーバーから機能がダウンロードされないため、ポップアップには何も表示されません。マップを 2 回目にクリックすると、フィーチャがダウンロードされ、実際のグラフィックをクリックしているため、ポップアップにこのグラフィックの情報が表示されます。これを回避するには、ポップアップを表示する前に、queryTask の結果をポップアップに設定する必要があります。これを行うには、showResults 関数内で map.infoWindow.setFeatures を呼び出します。

于 2013-11-21T18:50:58.880 に答える