From 083fe22f0870108d1154d59db4588fb31b46e5a6 Mon Sep 17 00:00:00 2001 From: Emux Date: Tue, 23 Aug 2016 14:05:17 +0300 Subject: [PATCH] libGDX marker layer example, #151 --- .../res/drawable-hdpi/ic_action_search.png | Bin 3120 -> 0 bytes .../res/drawable-mdpi/ic_action_search.png | Bin 3030 -> 0 bytes .../res/drawable-xhdpi/ic_action_search.png | Bin 3199 -> 0 bytes .../android/test/MarkerOverlayActivity.java | 9 +- vtm-playground/resources/res/marker_focus.png | Bin 0 -> 1652 bytes vtm-playground/resources/res/marker_poi.png | Bin 0 -> 490 bytes .../src/org/oscim/test/MarkerLayerTest.java | 90 ++++++++++++++++++ 7 files changed, 94 insertions(+), 5 deletions(-) delete mode 100644 vtm-android-example/res/drawable-hdpi/ic_action_search.png delete mode 100644 vtm-android-example/res/drawable-mdpi/ic_action_search.png delete mode 100644 vtm-android-example/res/drawable-xhdpi/ic_action_search.png create mode 100644 vtm-playground/resources/res/marker_focus.png create mode 100644 vtm-playground/resources/res/marker_poi.png create mode 100644 vtm-playground/src/org/oscim/test/MarkerLayerTest.java diff --git a/vtm-android-example/res/drawable-hdpi/ic_action_search.png b/vtm-android-example/res/drawable-hdpi/ic_action_search.png deleted file mode 100644 index 67de12decbd60613f6716de113daae46dc7d6ff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3120 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 E59N2f#Q*>R diff --git a/vtm-android-example/res/drawable-xhdpi/ic_action_search.png b/vtm-android-example/res/drawable-xhdpi/ic_action_search.png deleted file mode 100644 index d699c6b37e0dcb1d636ebdd6733ab6d576d97ab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3199 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 ReC-u>pr>W5S)<|b@_%^e3*P_$ diff --git a/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java b/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java index d84c0a76..015f67e1 100644 --- a/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java @@ -25,7 +25,6 @@ import org.oscim.backend.canvas.Bitmap; import org.oscim.core.GeoPoint; import org.oscim.layers.TileGridLayer; import org.oscim.layers.marker.ItemizedLayer; -import org.oscim.layers.marker.ItemizedLayer.OnItemGestureListener; import org.oscim.layers.marker.MarkerItem; import org.oscim.layers.marker.MarkerItem.HotspotPlace; import org.oscim.layers.marker.MarkerSymbol; @@ -37,9 +36,9 @@ import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap; import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; public class MarkerOverlayActivity extends BitmapTileMapActivity - implements OnItemGestureListener { + implements ItemizedLayer.OnItemGestureListener { - private static final boolean BILLBOARDS = false; + private static final boolean BILLBOARDS = true; private MarkerSymbol mFocusMarker; public MarkerOverlayActivity() { @@ -68,12 +67,12 @@ public class MarkerOverlayActivity extends BitmapTileMapActivity mFocusMarker = new MarkerSymbol(drawableToBitmap(d), HotspotPlace.CENTER, false); ItemizedLayer markerLayer = - new ItemizedLayer(mMap, new ArrayList(), + new ItemizedLayer<>(mMap, new ArrayList(), symbol, this); mMap.layers().add(markerLayer); - List pts = new ArrayList(); + List pts = new ArrayList<>(); for (double lat = -90; lat <= 90; lat += 5) { for (double lon = -180; lon <= 180; lon += 5) diff --git a/vtm-playground/resources/res/marker_focus.png b/vtm-playground/resources/res/marker_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..80ebd9031ed2c021a2f26bfcf27f1b1904897445 GIT binary patch literal 1652 zcmV-)28;QLP)UwY2oDu^LT*_$riG z?YC%r)WljWAI8>1zf4R`O>8Wh7=N_#r}818aNO(6z2kk&Fd+SqWaq*;XRo#H-uvux zE?c(z-+x+KS{@!481N4b4P6QbgSSJW(Cv|tkrfzz#~9}N`}>En_Fm~o=<4c{i0E1% z5Lluo>+9=d-QC@+wY8NsbnIpI0|D03?c-yZ!y0+*HTVK!Q-rj&wOIxS2QT~me&+M} z7`-*CtE*$RwY3owM<AW1hw)0|v0c0j^l-OR(GRCC$yvixg7R$Vdl{FyVt+Vba-Onf=0NOguHoq^C|W z*We-k6i=Sx<3|q3xp|qZaF0hT?}P;HcB56gjw|A)+QVH8s7are>+B zsmV~l0@VQ0WEL4uQ!8!xapsu(gjHX>&Yx%j7&nU)Paol_3mu%`hK9&Cw^%G8x7%&( zz{g(Up{^Nw$5`M)$0=$*neH%*V_xsWYYP2}cAq**;D!dJ4cuQ@Svl9(*k}L{W^VA^ z;%VzPh{4;&+V+U5UK9!)cxVagad1Nev_Mdz)oT4gF9><(&F;<54QUdhM8+&q`tb^u(b=c3A#jt1UzC*XEG{no zQWQnqF7t&$uHR+emd)8^w2LDmi5nV}qJAhpKYyyax|-2-K;vAEK1BV-)4o?5_9u_7 z-G^vCo<0Ola6<#MK+pqeX=%>#^72)E+QefohwEVcU1O&vQPCnLtkJ1)0;tmk?)3C@ z541qgePoXo6&2m2yNNbRnzJlqJj*D3s44sFA2a(~*ZC8D3gd>ejLt&f;68;jQi%>Y ziTgWfkhSoiq^zv0Au23Gl(6k_O5?3JeA<&AZVSM{?Lk+}tKfzP^%Vq1e^y~(;WyMI z`C(_aGa$+=Qn5_hALL@fJ9g?{k;DNmaDrQN{g9O4;M7Maa)l*J&&kP|rW+hH6NU5%?|mP+Q==uIPoa5Y z4p01z16jFKqXwk|hYe!Dk(--)0i0%6SS3milI7;*<;~LlgcqDXeJFG%?LOh{8?lcJ zY8lu~N&zcr0w%D*0WO&{>X*k>Ied?i`VXmDts@@>8T>Ofa_Z{M6n8O;Zg%5mzA!F^>h!}OD zZUkTKLGmNix>v{GUi} yTmVg#!(L2QL1rU!$Yztrisdz_vd{K-h5Q4K^Li0#;)dS<0000n{BK=E;?m>Y(AC`L9w0f>8m_%jgy$AyI1NYcen}FrpjOL#!b%e8;?Z5zruBm|?Im`An)ozw8(MSf!nt z2{eccY|vl(MSY|i0>g(4Yjy$+QUGFRhTrxJPLXTSUGv^&Ktr6tUIfO(M{*4U#^5iY zA;~~23G&(}at-=oJLfmhkV+s{WdL$6kZaIo)AkQQL)w5?o8h6wgazapv_K>6A>5!H zdS!_}?dJa^)sSy?bN@t&S)PP@4HQrZ4XSsNYS285)JH(QE8u|*in=Iqt7xEM*NHV` zvu@D~EpF+9K)wC&=m#ezV4`vr)G1$~m3;-|WPIKMxddp)5ulz0P}e{bBsh5klQ|F@ z0C8@Dgzc_{8tM0eG4c@ z1&DV;@fN69KU9qYYNmx10}#WwpiXs$Dz1b^ZyS`I43$%Ws%6A1*boLXLv50TMyoay gt3t&*&G|VwbegFUf07*qoM6N<$f{i864gdfE literal 0 HcmV?d00001 diff --git a/vtm-playground/src/org/oscim/test/MarkerLayerTest.java b/vtm-playground/src/org/oscim/test/MarkerLayerTest.java new file mode 100644 index 00000000..124ecda0 --- /dev/null +++ b/vtm-playground/src/org/oscim/test/MarkerLayerTest.java @@ -0,0 +1,90 @@ +/* + * Copyright 2016 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.test; + +import org.oscim.backend.CanvasAdapter; +import org.oscim.backend.canvas.Bitmap; +import org.oscim.core.GeoPoint; +import org.oscim.gdx.GdxMapApp; +import org.oscim.layers.TileGridLayer; +import org.oscim.layers.marker.ItemizedLayer; +import org.oscim.layers.marker.MarkerItem; +import org.oscim.layers.marker.MarkerSymbol; +import org.oscim.layers.tile.bitmap.BitmapTileLayer; +import org.oscim.tiling.source.bitmap.DefaultSources; + +import java.util.ArrayList; +import java.util.List; + +public class MarkerLayerTest extends GdxMapApp implements ItemizedLayer.OnItemGestureListener { + + private static final boolean BILLBOARDS = true; + private MarkerSymbol mFocusMarker; + + @Override + public void createLayers() { + BitmapTileLayer bitmapLayer = new BitmapTileLayer(mMap, DefaultSources.STAMEN_TONER.build()); + bitmapLayer.tileRenderer().setBitmapAlpha(0.5f); + mMap.setBaseMap(bitmapLayer); + + mMap.setMapPosition(0, 0, 1 << 2); + + Bitmap bitmapPoi = CanvasAdapter.decodeBitmap(getClass().getResourceAsStream("/res/marker_poi.png")); + MarkerSymbol symbol; + if (BILLBOARDS) + symbol = new MarkerSymbol(bitmapPoi, MarkerItem.HotspotPlace.BOTTOM_CENTER); + else + symbol = new MarkerSymbol(bitmapPoi, MarkerItem.HotspotPlace.CENTER, false); + + Bitmap bitmapFocus = CanvasAdapter.decodeBitmap(getClass().getResourceAsStream("/res/marker_focus.png")); + if (BILLBOARDS) + mFocusMarker = new MarkerSymbol(bitmapFocus, MarkerItem.HotspotPlace.BOTTOM_CENTER); + else + mFocusMarker = new MarkerSymbol(bitmapFocus, MarkerItem.HotspotPlace.CENTER, false); + + ItemizedLayer markerLayer = new ItemizedLayer<>(mMap, new ArrayList(), symbol, this); + mMap.layers().add(markerLayer); + + List pts = new ArrayList<>(); + for (double lat = -90; lat <= 90; lat += 5) { + for (double lon = -180; lon <= 180; lon += 5) + pts.add(new MarkerItem(lat + "/" + lon, "", new GeoPoint(lat, lon))); + } + markerLayer.addItems(pts); + + mMap.layers().add(new TileGridLayer(mMap)); + } + + @Override + public boolean onItemSingleTapUp(int index, MarkerItem item) { + if (item.getMarker() == null) + item.setMarker(mFocusMarker); + else + item.setMarker(null); + + System.out.println(item.getTitle()); + return true; + } + + @Override + public boolean onItemLongPress(int index, MarkerItem item) { + return false; + } + + public static void main(String[] args) { + GdxMapApp.init(); + GdxMapApp.run(new MarkerLayerTest(), null, 400); + } +}