0

如何像在 osmdroid 中一样在 mapsforge 中设置边界框,以及如何在 pathLayer 上方或下方放置文本?

在 osmdroid 中,我通常调用该setScrollableAreaLimit()方法,但在 mapsforge 中没有这样的方法mapView。我该如何做到这一点?

还有我如何在TextOverlay下面或上面添加一个PathLayer

//Bounding Box
maxScrollableLimit = new BoundingBox(14.7882,121.1421,14.3469,120.8990);

...

private PathLayer createPathLayerFirst(PathWrapper response) {
    Style style = Style.builder()
            .generalization(Style.GENERALIZATION_SMALL)
            .strokeColor(0x9900cc33)
            .strokeWidth(4 * getResources().getDisplayMetrics().density)
            .build();
    PathLayer pathLayer = new PathLayer(mapView.map(), style);
    List<GeoPoint> geoPoints = new ArrayList<>();
    PointList pointList = response.getPoints();
    for (int i = 0; i < pointList.getSize(); i++)
        geoPoints.add(new GeoPoint(pointList.getLatitude(i), pointList.getLongitude(i)));
    pathLayer.setPoints(geoPoints);
    return pathLayer;
}
4

1 回答 1

0

从您提供的代码中,不清楚您是否查看过mapsforge 文档。先这样做,然后返回我的答案。

要设置地图限制,请将以下代码添加到您的 onStart() 方法中:

mapView.getModel().mapViewPosition.setMapLimit(this.getBoundingBox());

在同一个类中,准备好以下方法:

private BoundingBox getBoundingBox() {
    final double MINLAT = Double.valueOf(res.getString(R.string.mapminlat));
    final double MINLON = Double.valueOf(res.getString(R.string.mapminlon));
    final double MAXLAT = Double.valueOf(res.getString(R.string.mapmaxlat));
    final double MAXLON = Double.valueOf(res.getString(R.string.mapmaxlon));
    return new BoundingBox(MINLAT, MINLON, MAXLAT, MAXLON);
}

要向您的地图视图添加图层,请执行以下操作:

mapView.getLayerManager().getLayers().add(layer);

要创建图层,请参阅文档。特别看例子;也许 LabelLayer 就是你要找的。

于 2017-01-27T14:13:58.530 回答