2016-04-15 59 views
1

获得国家,我有文件与各国从中我获得功能,然后做简单的标记列表:展开地图如何为点位置

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

这是因为您正在将标记投射到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 S,所以如果你想要做什么特别的东西,需要类型转换,去与那类。

+0

谢谢,thagel,但这不是我需要的。我需要获取国家名称没有任何地图迭代 - 否则我可以使用country.isInside(arg0,arg1,arg2).. 国家的名称是其他计算所必需的.. –

相关问题