Hello,
I am using Java Runtime 100.7.
mapView.setOnMouseClicked(event -> {
// check for primary or secondary mouse click
if (event.isStillSincePress() && event.getButton() == MouseButton.PRIMARY) {
// create a point from where the user clicked
Point2D point = new Point2D(event.getX(), event.getY());// identify the clicked features
final ListenableFuture<List<IdentifyLayerResult>> results = mapView.identifyLayersAsync(point, 10,
false, 10);
results.addDoneListener(() -> {// System.out.println("Listener");try {List<IdentifyLayerResult> ListLayer = results.get();
int j = 0;
for (IdentifyLayerResult layer : ListLayer) {// search the layers for identified features
List<Feature> features = layer.getElements().stream()
.filter(geoElement -> geoElement instanceof Feature).map(g -> (Feature) g)
.collect(Collectors.toList());// select features
int FeaturesSize = features.size();
for (int i = 0; i < FeaturesSize; i++) {
Feature f = features.get(i);
// printFeature_Info(f);
String attributeNamePopUp = "";
try {
attributeNamePopUp = layer.getLayerContent().getName();
} catch (java.lang.NullPointerException e) {
}
new ArcGIS_Information_Frame_For_Layer(f.getAttributes(), attributeNamePopUp);setupGraphicsOverlay();
List<Graphic> graphics = new ArrayList<>();
graphics.add(new Graphic(f.getGeometry()));
graphicsOverlay.getGraphics().addAll(graphics);
}
}} catch (Exception e) {
e.printStackTrace();
}
});
}
});
Thank you for your help,
Adrien.
Hi Adrien, thanks for your question.
It sounds like you have sucessfully Identified the Feature(s) you need. However, I'm not clear if this is a problem with this specifc Webmap or a problem with the type of Fields in the Feature. Do you have your code working for FeatureLayers in other Webmaps? Have a look at `com.esri.arcgisruntime.mapping.view.IdentifyLayerResult.getPopups()` which returns a 'List<Popup>'. This information can be used to create your UI.. If you need more control of the specifc popup fields then consider using something like:
```
Popup popup = new Popup(geoElement);
List<PopupField> fields = popup.getPopupDefinition().getFields();
```
Hello Gayle,
Thank you for your answer.
My code does work for other WebMap.
I have checked, there are no popups affiliated with this WebMap.
I have used your method to check popups and it gave me no pop up for this webmap and for its sublayers.
Hi,
you'd have to check that the Fields of those Layers are as your code expects. You can see the source of the data if you go to Item Details->Layers then access the link displayed. That is https://demographics9.arcgis.com/arcgis/rest/services/USA_Demographics_and_Boundaries_2019/MapServer...
You can see that this service has 4 layers called BlockGroup. You will find the Median Houseold income listed there. The other data you see in the ArcGISOnline Popup may be configured specifically for that application and may not be part of the service data.
Regards,
Gayle.
Thank you for your answer.
How do you go to Item Details->Layers? Is it a website? or attribute of an object?
And, in the link the gave me, I see this is a MapServer.
With this MapServer, I see, following your direction I can have access to Feature Layer. How do I get the ArcGISMap of these feature layer? Is there a PortalID?
Adrien
I'm assuming you can use https://www.arcgis.com/home/webmap/viewer.html?webmap=ca8a15ea0bc2413396c322198d50fd1e in ArcGISOnline. There you can see About->More Details which takes you to the WebMap Item in ArcGISOnline; this is https://www.arcgis.com/home/item.html?id=ca8a15ea0bc2413396c322198d50fd1e. Here you will get a link to the Layers that make up the WebMap.