如何像在 osmdroid 中一样在 mapsforge 中设置边界框,以及如何将文本放在 pathLayer 的上方或下方?
How to set bounding box in mapsforge just like in osmdroid and how do I put a text above or below the pathLayer?
如何像在 osmdroid 中一样在 mapsforge 中设置边界框,以及如何将文本放在 pathLayer 的上方或下方?
在osmdroid中,我通常调用setScrollableAreaLimit()
方法,但在mapsforge中mapView
中没有这样的方法。我该如何实现?
以及如何在 PathLayer
下方或上方添加 TextOverlay
?
//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;
}
根据您提供的代码,根本不清楚您是否看过 mapsforge docs。先这样做,然后 return 我的回答。
要设置地图限制,请将以下代码添加到您的 onStart() 方法中:
mapView.getModel().mapViewPosition.setMapLimit(this.getBoundingBox());
并且在同一个class中,准备好以下方法:
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);
要创建图层,请参阅文档。特别看一下 examples;也许 LabelLayer 就是您要找的东西。
如何像在 osmdroid 中一样在 mapsforge 中设置边界框,以及如何将文本放在 pathLayer 的上方或下方?
在osmdroid中,我通常调用setScrollableAreaLimit()
方法,但在mapsforge中mapView
中没有这样的方法。我该如何实现?
以及如何在 PathLayer
下方或上方添加 TextOverlay
?
//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;
}
根据您提供的代码,根本不清楚您是否看过 mapsforge docs。先这样做,然后 return 我的回答。
要设置地图限制,请将以下代码添加到您的 onStart() 方法中:
mapView.getModel().mapViewPosition.setMapLimit(this.getBoundingBox());
并且在同一个class中,准备好以下方法:
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);
要创建图层,请参阅文档。特别看一下 examples;也许 LabelLayer 就是您要找的东西。