Как установить ограничивающую рамку в 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;
}

person Lily    schedule 26.01.2017    source источник


Ответы (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 — это то, что вы ищете.

person kalabalik    schedule 27.01.2017