双击以获取 DynamciLayer 的弹出窗口

Double-click to get the popup for DynamciLayer

本文关键字:窗口 DynamciLayer 获取 双击      更新时间:2023-09-26

我有一个动态层,我想为其定义一个弹出窗口。

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

我创建了一个新的 queryTask 对象,用于对由 URL 标识的图层资源执行查询:

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);
}

为什么我必须单击两次才能使弹出窗口正常工作?一次单击突出显示该区域,然后我需要再次单击才能获得弹出窗口。

第一次单击时,将触发映射单击事件并调用 executeQueryTask。在查询任务完成之前,不会从服务器下载任何功能,因此弹出窗口不会显示任何内容。第二次单击地图时,将下载要素并单击实际图形,因此弹出窗口将显示此图形的信息。为了绕过这一点,您需要在显示弹出窗口之前将查询任务的结果设置为弹出窗口。您可以通过在showResults函数中调用map.infoWindow.setFeatures来做到这一点。