展开映射如何获取点位置的国家/地区

时间:2016-04-15 11:58:35

标签: java

我有一些国家的文件,我从中获取功能,然后列出简单的标记:

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

但我无法理解如何创建类,以便只获取多边形形状。

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

提前感谢你!

1 个答案:

答案 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,因此如果您想要做任何特殊操作并需要进行类型转换,请使用该类。