사용자가 160-ish 레이어 사이를 전환 할 수있는 웹 애플리케이션이 있습니다. 대부분이 기능 레이어이지만 일부는 ArcGISDynamicMapServiceLayer
유형입니다.레이어 쿼리가 성공한 직후 인포메이션 윈도우를 보여줍니다.
필자는 FeatureLayers에서와 마찬가지로 레이어를 쿼리 할 수 있어야합니다.지도의 아무 지점이나 클릭하여 정보 창을 표시 할 수 있어야합니다.
executeQueryTask: function(evt, scope) {
//"this" is the map object in this context, so we pass in the scope from the caller,
//which will enable us to call the layer and map object and all the other precious widget properties
scope.map.graphics.clear();
scope.map.infoWindow.hide();
//we create a new Circle and set its center at the mappoint. The radius will be 20 meters
//default unit is meters.
var circle = new Circle({
/*...*/
});
// draw the circle to the map:
var circleGraphic = new Graphic(circle, /*...*/));
scope.map.graphics.add(circleGraphic);
var queryTask = new QueryTask(scope.layer.layer.url + "/" + scope.layer.layer.visibleLayers[0]);
var query = new Query();
query.returnGeometry = true;
query.outFields = ["*"];
query.geometry = circle.getExtent();
var infoTemplate = new InfoTemplate().setTitle("");
queryTask.execute(query, function(resultSet) {
array.forEach(resultSet.features, function(feature) {
var graphic = feature;
graphic.setSymbol(/*...*/));
//Set the infoTemplate.
// graphic.setInfoTemplate(infoTemplate);
//Add graphic to the map graphics layer.
scope.map.infoWindow.setContent(graphic.attributes);
scope.map.infoWindow.show(evt.mapPoint, scope.map.getInfoWindowAnchor(evt.screenPoint));
scope.map.graphics.add(graphic);
});
});
},
중요한 점은 queryTask.execute
콜백 insise입니다 :
이 (명확성을 위해 일부 비트를 제거) 지금까지 내 코드입니다. 주석 처리를 제거하고 graphic.setInfoTemplate(infoTemplate);
을 사용하면 결과에 색상이 표시되고 두 번째 클릭시 정보창이 나타납니다. 이 방법이 문제가 있습니다
- 이 클릭이 내가 두 번 폴리 라인과 포인트를 클릭 드릴 수 없습니다 필요하다 그래서 정보창 여기에 팝업되지는.
반경이 100m 인 클릭을 얻으려면 원을 추가 한 것입니다. 이제 immediatly infoWindow를 반환하고 싶습니다. 이 시점에서 나는 즉시 표시되는 Info Window를 성공적으로 만들기 위해 고심하고있다.
현재 라인 scope.map.infoWindow.setContent(graphic.attributes);
는 Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.
가 어떻게 정보 창 것을 만들 수있는 오류가 발생합니다?
그게 도움이됩니다. –