Atlas multi-texture sample improvements #319
This commit is contained in:
parent
ca56e0fe33
commit
e0c02a83d0
@ -18,7 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.android.test;
|
package org.oscim.android.test;
|
||||||
|
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.oscim.backend.CanvasAdapter;
|
import org.oscim.backend.CanvasAdapter;
|
||||||
@ -45,12 +44,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
|
|
||||||
|
|
||||||
public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
|
public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
|
||||||
|
|
||||||
private java.util.Map<Object, TextureRegion> regionsMap;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void createLayers() {
|
void createLayers() {
|
||||||
// Map events receiver
|
// Map events receiver
|
||||||
@ -61,21 +56,11 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
|
|||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
mMap.setTheme(VtmThemes.DEFAULT);
|
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
|
// Create Atlas from Bitmaps
|
||||||
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
|
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
|
||||||
regionsMap = new LinkedHashMap<>();
|
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
|
||||||
List<TextureAtlas> atlasList = new ArrayList<>();
|
List<TextureAtlas> atlasList = new ArrayList<>();
|
||||||
|
|
||||||
inputMap.put("poi", bitmapPoi);
|
|
||||||
inputMap.put("focus", bitmapFocus);
|
|
||||||
|
|
||||||
float scale = getResources().getDisplayMetrics().density;
|
float scale = getResources().getDisplayMetrics().density;
|
||||||
Canvas canvas = CanvasAdapter.newCanvas();
|
Canvas canvas = CanvasAdapter.newCanvas();
|
||||||
Paint paint = CanvasAdapter.newPaint();
|
Paint paint = CanvasAdapter.newPaint();
|
||||||
@ -103,18 +88,7 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
|
|||||||
// With iOS we must flip the Y-Axis
|
// With iOS we must flip the Y-Axis
|
||||||
TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false);
|
TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false);
|
||||||
|
|
||||||
MarkerSymbol symbol;
|
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), (MarkerSymbol) null, this);
|
||||||
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);
|
|
||||||
mMap.layers().add(mMarkerLayer);
|
mMap.layers().add(mMarkerLayer);
|
||||||
|
|
||||||
mMarkerLayer.addItems(pts);
|
mMarkerLayer.addItems(pts);
|
||||||
@ -132,13 +106,13 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onItemSingleTapUp(int index, MarkerItem item) {
|
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();
|
Toast.makeText(this, "Marker tap\n" + item.getTitle(), Toast.LENGTH_SHORT).show();
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,8 +43,6 @@ import static org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
|||||||
|
|
||||||
public class AtlasMultiTextureTest extends MarkerLayerTest {
|
public class AtlasMultiTextureTest extends MarkerLayerTest {
|
||||||
|
|
||||||
private java.util.Map<Object, TextureRegion> regionsMap;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createLayers() {
|
public void createLayers() {
|
||||||
// Map events receiver
|
// Map events receiver
|
||||||
@ -57,17 +55,11 @@ public class AtlasMultiTextureTest extends MarkerLayerTest {
|
|||||||
|
|
||||||
mMap.setMapPosition(0, 0, 1 << 2);
|
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
|
// Create Atlas from Bitmaps
|
||||||
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
|
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
|
||||||
regionsMap = new LinkedHashMap<>();
|
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
|
||||||
List<TextureAtlas> atlasList = new ArrayList<>();
|
List<TextureAtlas> atlasList = new ArrayList<>();
|
||||||
|
|
||||||
inputMap.put("poi", bitmapPoi);
|
|
||||||
inputMap.put("focus", bitmapFocus);
|
|
||||||
|
|
||||||
Canvas canvas = CanvasAdapter.newCanvas();
|
Canvas canvas = CanvasAdapter.newCanvas();
|
||||||
Paint paint = CanvasAdapter.newPaint();
|
Paint paint = CanvasAdapter.newPaint();
|
||||||
paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL);
|
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
|
// With iOS we must flip the Y-Axis
|
||||||
TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false);
|
TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false);
|
||||||
|
|
||||||
MarkerSymbol symbol;
|
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), (MarkerSymbol) null, this);
|
||||||
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);
|
|
||||||
mMap.layers().add(mMarkerLayer);
|
mMap.layers().add(mMarkerLayer);
|
||||||
|
|
||||||
mMarkerLayer.addItems(pts);
|
mMarkerLayer.addItems(pts);
|
||||||
@ -123,16 +104,16 @@ public class AtlasMultiTextureTest extends MarkerLayerTest {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onItemSingleTapUp(int index, MarkerItem item) {
|
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());
|
System.out.println("Marker tap " + item.getTitle());
|
||||||
return true;
|
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) {
|
public static void main(String[] args) {
|
||||||
GdxMapApp.init();
|
GdxMapApp.init();
|
||||||
GdxMapApp.run(new AtlasMultiTextureTest());
|
GdxMapApp.run(new AtlasMultiTextureTest());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user