2

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

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

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

4

1 回答 1

4

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

于 2013-11-21T18:50:58.880 回答