From cfa9326e2b443a17f28dbf48d2915dc724c74c42 Mon Sep 17 00:00:00 2001 From: Emux Date: Tue, 2 Aug 2016 10:09:39 +0300 Subject: [PATCH] Separate layer groups example, #103 --- vtm-android-example/AndroidManifest.xml | 45 ++++++----- .../android/test/LayerGroupActivity.java | 79 +++++++++++++++++++ .../src/org/oscim/android/test/Samples.java | 4 +- .../oscim/android/test/SimpleMapActivity.java | 26 ++---- 4 files changed, 114 insertions(+), 40 deletions(-) create mode 100644 vtm-android-example/src/org/oscim/android/test/LayerGroupActivity.java diff --git a/vtm-android-example/AndroidManifest.xml b/vtm-android-example/AndroidManifest.xml index e5d6b64d..b93f4c27 100644 --- a/vtm-android-example/AndroidManifest.xml +++ b/vtm-android-example/AndroidManifest.xml @@ -26,36 +26,39 @@ - - - - - - - + + + + + + + + diff --git a/vtm-android-example/src/org/oscim/android/test/LayerGroupActivity.java b/vtm-android-example/src/org/oscim/android/test/LayerGroupActivity.java new file mode 100644 index 00000000..6238922f --- /dev/null +++ b/vtm-android-example/src/org/oscim/android/test/LayerGroupActivity.java @@ -0,0 +1,79 @@ +/* + * Copyright 2013 Hannes Janetzek + * Copyright 2016 devemux86 + * Copyright 2016 Andrey Novikov + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * 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.os.Bundle; + +import org.oscim.backend.CanvasAdapter; +import org.oscim.layers.tile.buildings.BuildingLayer; +import org.oscim.layers.tile.vector.labeling.LabelLayer; +import org.oscim.map.Layers; +import org.oscim.renderer.BitmapRenderer; +import org.oscim.renderer.GLViewport; +import org.oscim.scalebar.DefaultMapScaleBar; +import org.oscim.scalebar.ImperialUnitAdapter; +import org.oscim.scalebar.MapScaleBar; +import org.oscim.scalebar.MapScaleBarLayer; +import org.oscim.scalebar.MetricUnitAdapter; +import org.oscim.theme.VtmThemes; + +public class LayerGroupActivity extends BaseMapActivity { + + private static final int GROUP_3D_OBJECTS = 1; + private static final int GROUP_LABELS = 2; + private static final int GROUP_OVERLAYS = 3; + + private DefaultMapScaleBar mapScaleBar; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Layers layers = mMap.layers(); + + layers.addGroup(GROUP_3D_OBJECTS); + layers.add(new BuildingLayer(mMap, mBaseLayer), GROUP_3D_OBJECTS); + + layers.addGroup(GROUP_LABELS); + layers.add(new LabelLayer(mMap, mBaseLayer), GROUP_LABELS); + + mapScaleBar = new DefaultMapScaleBar(mMap, CanvasAdapter.dpi / 160); + mapScaleBar.setScaleBarMode(DefaultMapScaleBar.ScaleBarMode.BOTH); + mapScaleBar.setDistanceUnitAdapter(MetricUnitAdapter.INSTANCE); + mapScaleBar.setSecondaryDistanceUnitAdapter(ImperialUnitAdapter.INSTANCE); + mapScaleBar.setScaleBarPosition(MapScaleBar.ScaleBarPosition.BOTTOM_LEFT); + + MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar); + BitmapRenderer renderer = mapScaleBarLayer.getRenderer(); + renderer.setPosition(GLViewport.Position.BOTTOM_LEFT); + renderer.setOffset(5 * CanvasAdapter.dpi / 160, 0); + + layers.addGroup(GROUP_OVERLAYS); + layers.add(mapScaleBarLayer, GROUP_OVERLAYS); + + mMap.setTheme(VtmThemes.DEFAULT); + } + + @Override + protected void onDestroy() { + mapScaleBar.destroy(); + + super.onDestroy(); + } +} diff --git a/vtm-android-example/src/org/oscim/android/test/Samples.java b/vtm-android-example/src/org/oscim/android/test/Samples.java index 0f5d20da..15e85801 100644 --- a/vtm-android-example/src/org/oscim/android/test/Samples.java +++ b/vtm-android-example/src/org/oscim/android/test/Samples.java @@ -1,6 +1,7 @@ /* * Copyright 2010, 2011, 2012, 2013 mapsforge.org * Copyright 2013 Hannes Janetzek + * Copyright 2016 devemux86 * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -43,8 +44,9 @@ public class Samples extends Activity { linearLayout.addView(createButton(SimpleMapActivity.class)); linearLayout.addView(createButton(BitmapTileMapActivity.class)); linearLayout.addView(createButton(MapsforgeMapActivity.class)); - linearLayout.addView(createButton(PathOverlayActivity.class)); linearLayout.addView(createButton(MarkerOverlayActivity.class)); + linearLayout.addView(createButton(PathOverlayActivity.class)); + linearLayout.addView(createButton(LayerGroupActivity.class)); linearLayout.addView(createButton(ThemeStylerActivity.class)); linearLayout.addView(createButton(S3DBMapActivity.class)); linearLayout.addView(createButton(JeoIndoorMapActivity.class)); diff --git a/vtm-android-example/src/org/oscim/android/test/SimpleMapActivity.java b/vtm-android-example/src/org/oscim/android/test/SimpleMapActivity.java index fe8f3c09..888c4e0c 100644 --- a/vtm-android-example/src/org/oscim/android/test/SimpleMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/SimpleMapActivity.java @@ -1,7 +1,6 @@ /* * Copyright 2013 Hannes Janetzek * Copyright 2016 devemux86 - * Copyright 2016 Andrey Novikov * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -23,9 +22,9 @@ import android.os.Bundle; import org.oscim.backend.CanvasAdapter; import org.oscim.core.MapPosition; import org.oscim.core.MercatorProjection; +import org.oscim.layers.GroupLayer; import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.vector.labeling.LabelLayer; -import org.oscim.map.Layers; import org.oscim.renderer.BitmapRenderer; import org.oscim.renderer.GLViewport; import org.oscim.scalebar.DefaultMapScaleBar; @@ -38,23 +37,16 @@ import org.oscim.theme.ThemeLoader; import org.oscim.theme.VtmThemes; public class SimpleMapActivity extends BaseMapActivity { - private static final int GROUP_3D_OBJECTS = 1; - private static final int GROUP_LABELS = 2; - private static final int GROUP_OVERLAYS = 3; - private DefaultMapScaleBar mapScaleBar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Layers layers = mMap.layers(); - - layers.addGroup(GROUP_3D_OBJECTS); - layers.add(new BuildingLayer(mMap, mBaseLayer), GROUP_3D_OBJECTS); - - layers.addGroup(GROUP_LABELS); - layers.add(new LabelLayer(mMap, mBaseLayer), GROUP_LABELS); + GroupLayer groupLayer = new GroupLayer(mMap); + groupLayer.layers.add(new BuildingLayer(mMap, mBaseLayer)); + groupLayer.layers.add(new LabelLayer(mMap, mBaseLayer)); + mMap.layers().add(groupLayer); mapScaleBar = new DefaultMapScaleBar(mMap, CanvasAdapter.dpi / 160); mapScaleBar.setScaleBarMode(DefaultMapScaleBar.ScaleBarMode.BOTH); @@ -66,9 +58,7 @@ public class SimpleMapActivity extends BaseMapActivity { BitmapRenderer renderer = mapScaleBarLayer.getRenderer(); renderer.setPosition(GLViewport.Position.BOTTOM_LEFT); renderer.setOffset(5 * CanvasAdapter.dpi / 160, 0); - - layers.addGroup(GROUP_OVERLAYS); - layers.add(mapScaleBarLayer, GROUP_OVERLAYS); + mMap.layers().add(mapScaleBarLayer); mMap.setTheme(VtmThemes.DEFAULT); } @@ -107,8 +97,8 @@ public class SimpleMapActivity extends BaseMapActivity { //mMapView.map().setMapPosition(p); p.setScale(2 + (1 << (int) (Math.random() * 13))); - // p.setX((p.getX() + (Math.random() * 4 - 2) / p.getScale())); - // p.setY((p.getY() + (Math.random() * 4 - 2) / p.getScale())); + //p.setX((p.getX() + (Math.random() * 4 - 2) / p.getScale())); + //p.setY((p.getY() + (Math.random() * 4 - 2) / p.getScale())); p.setX(MercatorProjection.longitudeToX(Math.random() * 180)); p.setY(MercatorProjection.latitudeToY(Math.random() * 60));