gpt4 book ai didi

java - 展开 map 如何获取点位置的国家/地区

转载 作者:行者123 更新时间:2023-11-30 07:27:20 29 4
gpt4 key购买 nike

我有一个包含我从中获取特征的国家/地区的文件,然后列出了简单的标记:

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

但我不明白如何创建类以便仅获得多边形形状。

或者这可能是另一种检查展开 map 位置的方法。

提前谢谢你!

最佳答案

这是因为您将标记转换到 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,因此,如果您想做任何特殊的事情并且需要类型转换,请使用该类。

关于java - 展开 map 如何获取点位置的国家/地区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36646536/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com