我有一些国家的文件,我从中获取功能,然后列出简单的标记:
// Load country polygons and adds them as markers
countries = GeoJSONReader.loadData(this, "countries.geo.json");
countryMarkers = MapUtils.createSimpleMarkers(countries);
现在我想查看给定点的国家/地区。所以我在AbstractShapeMarker中构建简单的标记,然后检查是否isInsideByLocation:
for (Marker country: countryMarkers) {
AbstractShapeMarker cou = (AbstractShapeMarker)country;
if (cou.isInsideByLocation(place.getLocation())) {
System.out.println("country!:" + country.getLocation() + "" +country.getProperties().get("name"));
}
}
这适用于简单形状的国家,但对于包含多个多边形的国家(例如美国),这不起作用。
在文档http://unfoldingmaps.org/javadoc/de/fhpotsdam/unfolding/data/MarkerFactory.html中说做标记工厂:
MarkerFactory markerFactory = new MarkerFactory();
markerFactory.setPolygonClass(MyPolygonMarker.class);
List<Marker> markers = markerFactory.createMarkers(features);
map.addMarkers(markers);
但我无法理解如何创建类,以便只获取多边形形状。
或者这可能是另一种检查展开地图的位置位置的方法。
提前感谢你!
答案 0 :(得分:1)
这是因为您将标记转换为AbstractShapeMarker
,它只处理单个多边形或线标记。根本不需要施放。您只需使用map.getHitMarkers(x,y)
或map.getFirstHitMarker(x,y)
即可。
void mouseMoved() {
Marker marker = map.getFirstHitMarker(mouseX, mouseY);
if (marker != null) {
println(marker.getStringProperty("name"));
}
}
在内部,包含多个多边形的标记为MultiMarker
,因此如果您想要做任何特殊操作并需要进行类型转换,请使用该类。