Atlas multi-texture sample improvements #319

This commit is contained in:
Emux 2017-03-05 16:54:07 +02:00
parent ca56e0fe33
commit e0c02a83d0
2 changed files with 16 additions and 61 deletions

View File

@ -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<Object, TextureRegion> 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<Object, Bitmap> inputMap = new LinkedHashMap<>();
regionsMap = new LinkedHashMap<>();
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
List<TextureAtlas> 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<MarkerItem>(), symbol, this);
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), (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;
}
}

View File

@ -43,8 +43,6 @@ import static org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
public class AtlasMultiTextureTest extends MarkerLayerTest {
private java.util.Map<Object, TextureRegion> 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<Object, Bitmap> inputMap = new LinkedHashMap<>();
regionsMap = new LinkedHashMap<>();
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
List<TextureAtlas> 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<MarkerItem>(), symbol, this);
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), (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());