Как установить ограничивающий прямоугольник в mapsforge, как в osmdroid, и как разместить текст над или под pathLayer?
Как установить ограничивающий прямоугольник в mapsforge, как в osmdroid, и как разместить текст над или под 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;
}
1 ответ
Решение
Из предоставленного вами кода не ясно, смотрели ли вы вообще на документы 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 - это то, что вы ищете.