我有一个动态图层,我想为其定义弹出窗口。
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);
}
为什么我必须单击两次以使弹出窗口正常工作?单击一下即可突出显示该区域,然后我需要再次单击以获取弹出窗口。
答案 0 :(得分:4)
第一次单击时,将触发map click事件并调用executeQueryTask。在queryTask完成之前,没有从服务器下载任何功能,因此弹出窗口不会显示任何内容。第二次单击地图时,将下载该功能并单击实际图形,弹出窗口将显示该图形的信息。为了绕过这个,您需要在显示弹出窗口之前将queryTask的结果设置为弹出窗口。您可以通过调用showResults函数中的map.infoWindow.setFeatures来实现。