/* * Copyright 2018 devemux86 * * This program is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with * this program. If not, see . */ package org.oscim.android.test; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import org.oscim.android.MapView; import org.oscim.backend.CanvasAdapter; import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.vector.VectorTileLayer; import org.oscim.layers.tile.vector.labeling.LabelLayer; import org.oscim.renderer.GLViewport; import org.oscim.scalebar.DefaultMapScaleBar; import org.oscim.scalebar.MapScaleBar; import org.oscim.scalebar.MapScaleBarLayer; import org.oscim.theme.VtmThemes; import org.oscim.tiling.source.mapfile.MapFileTileSource; import java.io.File; /** * A very basic Android app example. *

* You'll need a map with filename germany.map from download.mapsforge.org in device storage. * Can be berlin.map renamed as germany.map because of smaller size. */ public class GettingStarted extends Activity { // Name of the map file in device storage private static final String MAP_FILE = "germany.map"; private MapView mapView; private MapScaleBar mapScaleBar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Map view mapView = new MapView(this); setContentView(mapView); // Tile source MapFileTileSource tileSource = new MapFileTileSource(); String mapPath = new File(Environment.getExternalStorageDirectory(), MAP_FILE).getAbsolutePath(); if (tileSource.setMapFile(mapPath)) { // Vector layer VectorTileLayer tileLayer = mapView.map().setBaseMap(tileSource); // Building layer mapView.map().layers().add(new BuildingLayer(mapView.map(), tileLayer)); // Label layer mapView.map().layers().add(new LabelLayer(mapView.map(), tileLayer)); // Render theme mapView.map().setTheme(VtmThemes.DEFAULT); // Scale bar mapScaleBar = new DefaultMapScaleBar(mapView.map()); MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mapView.map(), mapScaleBar); mapScaleBarLayer.getRenderer().setPosition(GLViewport.Position.BOTTOM_LEFT); mapScaleBarLayer.getRenderer().setOffset(5 * CanvasAdapter.getScale(), 0); mapView.map().layers().add(mapScaleBarLayer); // Note: this map position is specific to Berlin area mapView.map().setMapPosition(52.517037, 13.38886, 1 << 12); } } @Override protected void onResume() { super.onResume(); mapView.onResume(); } @Override protected void onPause() { mapView.onPause(); super.onPause(); } @Override protected void onDestroy() { if (mapScaleBar != null) mapScaleBar.destroy(); mapView.onDestroy(); super.onDestroy(); } }