Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 双击以获取DynamiCilayer的弹出窗口_Javascript_Popup_Arcgis - Fatal编程技术网

Javascript 双击以获取DynamiCilayer的弹出窗口

Javascript 双击以获取DynamiCilayer的弹出窗口,javascript,popup,arcgis,Javascript,Popup,Arcgis,我有一个动态层,我想定义一个弹出窗口 DynamicLayer1 = new esri.layers.ArcGISDynamicMapServiceLayer( "http://testServer/arcgis/rest/services/TestMap/MapServer"); 我创建了一个新的queryTask对象,以对URL标识的层资源执行查询: dojo.connect(map, "onClick", executeQueryTask); query

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

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

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

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

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