2016-04-30 71 views
1

Google maps API可以在地圖上創建包含連接點在一起的多段線的圖層。在膠子中創建多段線mapLayer

我已經搜索了哪裏可以找到膠子mapLayer的一個例子或實現。

請指點

回答

3

雖然沒有了上MapView的頂部繪製直線,折線或多邊形沒有明確的API,該MapLayer在這裏你可以得出任何的JavaFX Shape,提供你把它擴展到照顧一層地圖座標。

對於這一點,如果你有一個看看PoiLayerclass,你可以看到,對於任何MapPoint(經度和緯度定義的),你可以得到一個2D點(x和y所定義的),你可以得出一個在該位置的節點:

MapPoint point = new MapPoint(37.396256,-121.953847); 
Node icon = new Circle(5, Color.BLUE); 
Point2D mapPoint = baseMap.getMapPoint(point.getLatitude(), point.getLongitude()); 
icon.setTranslateX(mapPoint.getX()); 
icon.setTranslateY(mapPoint.getY()); 

所以,如果你想創建,例如,基於一組點的Polygon,你有一個Polygon對象添加到層:

public class PoiLayer extends MapLayer { 

    private final Polygon polygon; 

    public PoiLayer() { 
     polygon = new Polygon(); 
     polygon.setStroke(Color.RED); 
     polygon.setFill(Color.rgb(255, 0, 0, 0.5)); 
     this.getChildren().add(polygon); 
    } 

    @Override 
    protected void layoutLayer() { 
     polygon.getPoints().clear(); 
     for (Pair<MapPoint, Node> candidate : points) { 
      MapPoint point = candidate.getKey(); 
      Node icon = candidate.getValue(); 
      Point2D mapPoint = baseMap.getMapPoint(point.getLatitude(), point.getLongitude()); 
      icon.setTranslateX(mapPoint.getX()); 
      icon.setTranslateY(mapPoint.getY()); 

      polygon.getPoints().addAll(mapPoint.getX(), mapPoint.getY()); 
     } 
    } 
} 

現在,在試聽課,打造集mapPoints的,並把它們添加到地圖:

private final List<MapPoint> polPoints = Arrays.asList(
     new MapPoint(37.887242, -122.178799), new MapPoint(37.738729, -121.921567), 
     new MapPoint(37.441704, -121.921567), new MapPoint(37.293191, -122.178799), 
     new MapPoint(37.441704, -122.436031), new MapPoint(37.738729, -122.436031)); 

private MapLayer myDemoLayer() { 
    PoiLayer poi = new PoiLayer(); 
    for (MapPoint mapPoint : polPoints) { 
     poi.addPoint(mapPoint, new Circle(5, Color.BLUE)); 
    } 
    return poi; 
} 

,你將有與它上面的地理定位的多邊形的地圖。

poi

+0

謝謝你,優秀的答案和可行的例子:) – Ron