gpt4 book ai didi

javafx - 在胶子mapLayer中创建折线

转载 作者:行者123 更新时间:2023-12-02 06:53:55 25 4
gpt4 key购买 nike

Google map API 可以在 map 上创建包含将点连接在一起的折线的图层。

我已经在哪里可以找到 gluon 的 mapLayer 的示例或实现。

请指教

最佳答案

虽然没有明确的 API 用于在 MapView 之上绘制直线、折线或多边形,但 MapLayer 是一个可以在其中绘制任何 JavaFX Shape 的层,前提是您负责将其缩放到 map 坐标。

为此,如果您查看 PoiLayer class ,您可以看到对于任何 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());
}
}
}

现在,在演示类上,创建一组 map 点,并将它们添加到 map 中:

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;
}

您将获得一张 map ,其顶部带有您的地理定位多边形。

poi

关于javafx - 在胶子mapLayer中创建折线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36952625/

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