From e0c02a83d0ec0e195113f1d66bf85b21c084c4f0 Mon Sep 17 00:00:00 2001 From: Emux Date: Sun, 5 Mar 2017 16:54:07 +0200 Subject: [PATCH] Atlas multi-texture sample improvements #319 --- .../test/AtlasMultiTextureActivity.java | 42 ++++--------------- .../org/oscim/test/AtlasMultiTextureTest.java | 35 ++++------------ 2 files changed, 16 insertions(+), 61 deletions(-) diff --git a/vtm-android-example/src/org/oscim/android/test/AtlasMultiTextureActivity.java b/vtm-android-example/src/org/oscim/android/test/AtlasMultiTextureActivity.java index caff2757..0cb76d1e 100644 --- a/vtm-android-example/src/org/oscim/android/test/AtlasMultiTextureActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/AtlasMultiTextureActivity.java @@ -18,7 +18,6 @@ */ package org.oscim.android.test; -import android.graphics.drawable.Drawable; import android.widget.Toast; import org.oscim.backend.CanvasAdapter; @@ -45,12 +44,8 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; -import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap; - public class AtlasMultiTextureActivity extends MarkerOverlayActivity { - private java.util.Map regionsMap; - @Override void createLayers() { // Map events receiver @@ -61,21 +56,11 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity { mMap.layers().add(new LabelLayer(mMap, l)); mMap.setTheme(VtmThemes.DEFAULT); - /* directly load bitmap from resources */ - Bitmap bitmapPoi = drawableToBitmap(getResources(), R.drawable.marker_poi); - - /* another option: use some bitmap drawable */ - Drawable d = getResources().getDrawable(R.drawable.marker_focus); - Bitmap bitmapFocus = drawableToBitmap(d); - // Create Atlas from Bitmaps java.util.Map inputMap = new LinkedHashMap<>(); - regionsMap = new LinkedHashMap<>(); + java.util.Map regionsMap = new LinkedHashMap<>(); List atlasList = new ArrayList<>(); - inputMap.put("poi", bitmapPoi); - inputMap.put("focus", bitmapFocus); - float scale = getResources().getDisplayMetrics().density; Canvas canvas = CanvasAdapter.newCanvas(); Paint paint = CanvasAdapter.newPaint(); @@ -103,18 +88,7 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity { // With iOS we must flip the Y-Axis TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false); - MarkerSymbol symbol; - if (BILLBOARDS) - symbol = new MarkerSymbol(regionsMap.get("poi"), HotspotPlace.BOTTOM_CENTER); - else - symbol = new MarkerSymbol(regionsMap.get("poi"), HotspotPlace.CENTER, false); - - if (BILLBOARDS) - mFocusMarker = new MarkerSymbol(regionsMap.get("focus"), HotspotPlace.BOTTOM_CENTER); - else - mFocusMarker = new MarkerSymbol(regionsMap.get("focus"), HotspotPlace.CENTER, false); - - mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList(), symbol, this); + mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList(), (MarkerSymbol) null, this); mMap.layers().add(mMarkerLayer); mMarkerLayer.addItems(pts); @@ -132,13 +106,13 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity { @Override public boolean onItemSingleTapUp(int index, MarkerItem item) { - if (item.getMarker() == null) { - MarkerSymbol markerSymbol = new MarkerSymbol(regionsMap.get(item.getTitle()), HotspotPlace.BOTTOM_CENTER); - item.setMarker(markerSymbol); - } else - item.setMarker(null); - Toast.makeText(this, "Marker tap\n" + item.getTitle(), Toast.LENGTH_SHORT).show(); return true; } + + @Override + public boolean onItemLongPress(int index, MarkerItem item) { + Toast.makeText(this, "Marker long press\n" + item.getTitle(), Toast.LENGTH_SHORT).show(); + return true; + } } diff --git a/vtm-playground/src/org/oscim/test/AtlasMultiTextureTest.java b/vtm-playground/src/org/oscim/test/AtlasMultiTextureTest.java index 1e97acf2..2d7c8eb0 100644 --- a/vtm-playground/src/org/oscim/test/AtlasMultiTextureTest.java +++ b/vtm-playground/src/org/oscim/test/AtlasMultiTextureTest.java @@ -43,8 +43,6 @@ import static org.oscim.layers.marker.MarkerSymbol.HotspotPlace; public class AtlasMultiTextureTest extends MarkerLayerTest { - private java.util.Map regionsMap; - @Override public void createLayers() { // Map events receiver @@ -57,17 +55,11 @@ public class AtlasMultiTextureTest extends MarkerLayerTest { mMap.setMapPosition(0, 0, 1 << 2); - Bitmap bitmapPoi = CanvasAdapter.decodeBitmap(getClass().getResourceAsStream("/res/marker_poi.png")); - Bitmap bitmapFocus = CanvasAdapter.decodeBitmap(getClass().getResourceAsStream("/res/marker_focus.png")); - // Create Atlas from Bitmaps java.util.Map inputMap = new LinkedHashMap<>(); - regionsMap = new LinkedHashMap<>(); + java.util.Map regionsMap = new LinkedHashMap<>(); List atlasList = new ArrayList<>(); - inputMap.put("poi", bitmapPoi); - inputMap.put("focus", bitmapFocus); - Canvas canvas = CanvasAdapter.newCanvas(); Paint paint = CanvasAdapter.newPaint(); paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL); @@ -94,18 +86,7 @@ public class AtlasMultiTextureTest extends MarkerLayerTest { // With iOS we must flip the Y-Axis TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false); - MarkerSymbol symbol; - if (BILLBOARDS) - symbol = new MarkerSymbol(regionsMap.get("poi"), HotspotPlace.BOTTOM_CENTER); - else - symbol = new MarkerSymbol(regionsMap.get("poi"), HotspotPlace.CENTER, false); - - if (BILLBOARDS) - mFocusMarker = new MarkerSymbol(regionsMap.get("focus"), HotspotPlace.BOTTOM_CENTER); - else - mFocusMarker = new MarkerSymbol(regionsMap.get("focus"), HotspotPlace.CENTER, false); - - mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList(), symbol, this); + mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList(), (MarkerSymbol) null, this); mMap.layers().add(mMarkerLayer); mMarkerLayer.addItems(pts); @@ -123,16 +104,16 @@ public class AtlasMultiTextureTest extends MarkerLayerTest { @Override public boolean onItemSingleTapUp(int index, MarkerItem item) { - if (item.getMarker() == null) { - MarkerSymbol markerSymbol = new MarkerSymbol(regionsMap.get(item.getTitle()), HotspotPlace.BOTTOM_CENTER); - item.setMarker(markerSymbol); - } else - item.setMarker(null); - System.out.println("Marker tap " + item.getTitle()); return true; } + @Override + public boolean onItemLongPress(int index, MarkerItem item) { + System.out.println("Marker long press " + item.getTitle()); + return true; + } + public static void main(String[] args) { GdxMapApp.init(); GdxMapApp.run(new AtlasMultiTextureTest());