From 8e9fde66083b366e8e7bb5adf8e946b52004f83a Mon Sep 17 00:00:00 2001 From: Tobrun Van Nuland Date: Mon, 13 Jun 2016 12:46:38 +0200 Subject: [PATCH] [android] #5276 - icon should be optional for MarkerView --- .../mapboxsdk/annotations/IconFactory.java | 8 ++++++++ .../com/mapbox/mapboxsdk/maps/MapboxMap.java | 8 +++++++- .../res/drawable-hdpi/default_markerview.png | Bin 0 -> 1669 bytes .../res/drawable-mdpi/default_markerview.png | Bin 0 -> 1115 bytes .../res/drawable-xhdpi/default_markerview.png | Bin 0 -> 2163 bytes .../res/drawable-xxhdpi/default_markerview.png | Bin 0 -> 3163 bytes .../res/drawable-xxxhdpi/default_markerview.png | Bin 0 -> 4071 bytes 7 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/default_markerview.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/default_markerview.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/default_markerview.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/default_markerview.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/default_markerview.png diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/IconFactory.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/IconFactory.java index d7d41b98b..93c6deddc 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/IconFactory.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/IconFactory.java @@ -33,6 +33,7 @@ public final class IconFactory { private Context mContext; private static IconFactory sInstance; private Icon mDefaultMarker; + private Icon mDefaultMarkerView; private BitmapFactory.Options mOptions; private int mNextId = 0; @@ -121,6 +122,13 @@ public final class IconFactory { return mDefaultMarker; } + public Icon defaultMarkerView() { + if (mDefaultMarkerView == null) { + mDefaultMarkerView = fromResource(R.drawable.default_markerview); + } + return mDefaultMarkerView; + } + private Icon fromInputStream(@NonNull InputStream is) { Bitmap bitmap = BitmapFactory.decodeStream(is, null, mOptions); return fromBitmap(bitmap); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 3fbdebe2b..72eabf579 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -20,6 +20,7 @@ import com.mapbox.mapboxsdk.annotations.Annotation; import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; import com.mapbox.mapboxsdk.annotations.BaseMarkerViewOptions; import com.mapbox.mapboxsdk.annotations.Icon; +import com.mapbox.mapboxsdk.annotations.IconFactory; import com.mapbox.mapboxsdk.annotations.InfoWindow; import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; @@ -1208,7 +1209,12 @@ public class MapboxMap { private MarkerView prepareViewMarker(BaseMarkerViewOptions markerViewOptions) { MarkerView marker = markerViewOptions.getMarker(); - marker.setIcon(markerViewOptions.getIcon()); + + Icon icon = markerViewOptions.getIcon(); + if (icon == null) { + icon = IconFactory.getInstance(mMapView.getContext()).defaultMarkerView(); + } + marker.setIcon(icon); return marker; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/default_markerview.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/default_markerview.png new file mode 100644 index 0000000000000000000000000000000000000000..651482f3ee218d6f646965a7bf97fada5c6f0828 GIT binary patch literal 1669 zcmV;027394P)pbBO=|1`fA+W@JDxgzcG}b_Etzb>0$M?&vJ#-E%`S&MRIBY0X~m%u;jrS6 zOM5_j1fRN>mAZ#W3#e*(0`{^&ttzbqS{l$UXd5*|ffQ`*xF)G<%QKnyPvd{n>>=Zj zrkSx5n(t_T@B6*?{e5pdbRd(_Xg_cU_#H3|M7F7zz#Q-~Fg;-y>2@|f9RS}3#sQQ- zfOvN|;XvRay<)XWc6F6veUr>N2qfyHBI!2{3d^#BHzrMEi@gv~LX!H#5=f?$gfPZ~`ZS6LI*M>%b%Ss@? zi>k`wmKRkOWup=<+pG;Ra1MyP)UV=~Bv&JK%OYJYGMmpco6qyTX;QZ=*EN1g;-!8S zyZ+As`0W2)k0}brV^LQFv-v#pg#xv0AX$=luBV3+hYvfhJsyh^Qxx=a`E}qO&tx<@ z3jFKT&=7+z3vVnfvAD8=Ix@oW_&CR3c?E#Xr=K!6HHG%Y7d#^br=EDi(MBqt=SDIK z@GI$bFgOm3o_y*lB(K-;q+b^bJpbBj{AO~J?ty{L|GEbT`1z}^QqAR9xOo$g$3ve( z-7A3r^Gizrcf7!Cj&I!=_URZ{u$Fo&ohwnUR{1uYeQe-wv)NW`6OJv@-qB|ZOUqkd1$&lqwaUWMGQekBPwUjH&)2Lb zU#0K-WbjNX)jI9@wnJjVFy?@ZX}v&3H}(w8=my!+)1SPg*au-b>Say$GCdxxAAs zFITIZHM>(nIX>E2qN=JSgoyt;5I7QDUr&o>0G>tpDj^Xvb_faTx z&9;3II3$F4V47yd5v;0eKX7Dw2yV&p?1_5)MBX&}`XUh&S$?E+zSJ~o9?$H%;c#My zaCQqJWYhfdjwNk@9s>?JxiRna-FT*6AIs>5JkZmF-{;$W{eQA}o96n1(zK$yVS2rF z2NPXF2%l-1#m(eWRkaIn4PaW5O1EVB&6?HZlkdKxZdn`kYImnwvixRRl1gpz@376< zII$4okR1OE znr1@?;R8bKujDmN(;q4)(=>}h2pQP4 P00000NkvXXu0mjfykRrp literal 0 HcmV?d00001 diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/default_markerview.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/default_markerview.png new file mode 100644 index 0000000000000000000000000000000000000000..63cb7b5f4bda0f8975e5a64e8278abd0f48c4588 GIT binary patch literal 1115 zcmV-h1f=_kP))!wX1L#Ra zK~zY`t(H$nBX<3qf=rsj+)dlI;ICFA&H4v+AqxI_ul*d z-h1EoW~PY-h^p#+pdYvm`0Qf?m;xpux;|DfuBi^u05IZryW7KUZK$%0D$4-q`8;|) z&!VQ0&E=B7HxXSQZ%7zb)$d$_c>h*sCm;D$&cjAlXL@CYL+f}fqU(dDbD@H4#P4=L zxEsE~Rj-GO&~oJiIsyUy+TZW}Ob~o84-S4Q6Gl~az$J*Icf&VuOA?obQxv)G^Rb%V z?)y@5ExbH9h&ycCNMA>&E?L2{(DHe-e4c`3ow2(miN1~yzzBd4Rn-BvBt5v**?Go! zHl1ej{d;z8#Ynu4GyQ|15N&Vg3WKFZ`+~(+Y@IS)=7`d9;{E|dA7DJE6&jjf4IN4YX zf6YYL9EJm!*Ykf@&zB(36A18XXsC*`BuY;pfKw2vFFNIz7lDc7j()p#)o!-7LORV) z_wM2E?mq2pEJjZta7JN(g(Ev7c>uGU2;SQd+^O@L=5m5J#3)S-1e)hNsJ z5Ysdct>dYPu1}Q-Z4Az?uTwih=OJgB%&xBk3|7t|c9uzCbb595(uB6}s2xjfh5(PW z-QDE7OO*aj)6jNzlfa|eO`#%70~nlJ-#EAQoM|$*z5y_3$IvK49=Ei-F;1)(=aoLW zw1jbDy?ETx@}|~S9;{F(Bq)mVG0?s(ic4*|+^1qwlfU*&G@nWl&t#T=mgR2^hr_2R zic3+HeZw${Wx`M>AUd(2{2>N_3x64)j(*649>i&Yu^>EJVEH(NH za8*&1J;N}LN+q{fW()9Il9smw@#$pj4|1kS&NP``Sz${MpT3r)@bP>wS2MIp41wn-pOEhc~|kB+ETC4C6>qlx?8dR_)&)3#=p(iQ~F|U-k(3?8kFX hc?Mu45{W{k;UCZ-pyl3)q~ZVo002ovPDHLkV1j|39e4l$ literal 0 HcmV?d00001 diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/default_markerview.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/default_markerview.png new file mode 100644 index 0000000000000000000000000000000000000000..175f88ff88593e8d404333168ff0bd3f8c80c958 GIT binary patch literal 2163 zcmV-(2#oiMP)_x@ zSPO(}Pm9lox2A@jKHsKy=A%*KsT6b3 zDAS8etYw~?KfVg|_9%+_%7A^r;0fRh-HbH*{Tyg+VNZR~minfb6h^{xgjZIKTPpBD zkD}Zy8?Y}JyrgRmZ%qxyJ30z9Wmo2-QSOb86Hld#TfIGsa>+JeUodz>_cuD4nm8H? z;S@zGAzCKGpe!@KuwdNk?@^R9TRkh5f;-;P!J*x|5giUHC8EQ@o53Kyni`%d3P9&6 zx4ZRrGI_HkU|%r!A@C;yuD!95*Cj!ZCm(X zoHQ;EnR8~o-EIK1);DY$9KinOW?JhTHZc?c>Za{Ud#8bbx2DEcP=pf+9xf~} zn@DW=`7V!#!%a;zdpwrbYj131=!YMOr&58wVDNO0qV$UZr`+xvz|LRn*+XMpou$RT z4u`ovJ4-B`24L^Wlk9u{ecn8F40j;F;=}~8begBj%V^mwyDhFO2m&+9%K)vnlgYmc zdIKN>{NdlMF5U;cXRmMIjZw2Ogb9n;k9c#xPBdgw;LKbW+CvjOoo3B z<}yvl0h};utQEL$B9VhTb>#~0Uc6WU2T<+v@$SWooVs!afbSL;2^VpNd|zz#`;E&J z4&Wd_OCVs$1P}G{bfmkR_O7nde$~~*k?!tI@0Jo1%Rz_HXj*9k;+mEVh{Na3Sq>)S z+1W(GQgoYGI&*+l%saQbnhS_(8(mGc&&S@ACpWE8%FJfKfKeAqNlgFtjr;c5PQ=DL zF$)?ru>>6a#Kjh1ozn?G9s2PQB~jXWy-p{)bpLpG?V4pkJ5B|p@%Sr%4T8UON2)>l{AdGH{j z%T-|32bV8%_v4RqrEXu)+DULwmPu|z`(Fh8%)1QmyLaBfTT^4XSujeTksFOv5_$3@ z=W}-Iu;G9I9vU((B|&euz5u%Hw)vHAxANNmfgVNqph~}g6X+V5o3jPj?D6oMwl?CL z#@y;^E(zB;owU@}S_+7K8JU~I#DoDj09=WuQi1ts)b`=r>vZx~88BNN>h%<(>P#Dn zTAz{h1AIF@{eP<(roH=(xsAD!dZbfplOfZtwzJe`oXJ!8c(GdevJV$JTqg?dsi(tta=VQ4=^$_`&!aYJe6W( zX4beoUu<4ow4?4(lz!muTIM2t(yY zwGp*zf-v-n-#-uvg)B|0#1dfjk|ebQJAm3qRn@(pY1(g-n&wJpGQ1&4mf-#)%RF0J zVjW@wUhf&z;ShnKBuNdDBxO`pP1*tsg+jF^F!9AH+M%^%v(Kb#_E(Wuj0TSvf35qa zaMMc)gYrhyPE}X``5TvOEN}mSBuN2Dl2%n!O_u}=g+lc}8{pb%!|$uBr}n4Qbv5hj zKc8Jzc|($L7issEM1rrrA0@M%WyRt6{9j)0=fwtKx<=Fa+7!2dYc1uQ-@07i{8H0S ztY@?JKgQ#JOm_3(#((!6Py#+ZPn>-dOT;> zA+{8c=S-M?_+E;~S%=t7kLRq7c-pPA6hv`Lsh}~-lqklYI-M7c4&0m{ABV%a4*99m zd0|QvV>SRqouvRUU^jK#a=V8jV%6o1QaH(cG|GH5n)}@?B350#<#rF1k<$YOJ}61j zu5zlwf1S>ew>7QB32#j=DNO#jNM=1tTo7*ky{_&W<%vU8)v)aWW-5lbud>ihkLPS!5XRDiFlI9-wvtRiHxmklT7i0g8nPtI@>ISC z=U!Ed6_Sk3vN=dpRn16}lrATlD=gEpEXTL3B&w<=B}vkNx=IC*P0dZqvb^-tTC77x z0gqlIw?kHeNm-VowpxC@Hn#xI*94{kbNO1ceJ0VHOXE+hfGJf#m1X(W|95K(*gD-u p-MVILEtpROl0ZzBWjl45{{hYSg6BmCMlb*X002ovPDHLkV1h??2uA<_ literal 0 HcmV?d00001 diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/default_markerview.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/default_markerview.png new file mode 100644 index 0000000000000000000000000000000000000000..be782e1d4b3d842c5d07906870d86efadceee30b GIT binary patch literal 3163 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 B|I7dY literal 0 HcmV?d00001 diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/default_markerview.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/default_markerview.png new file mode 100644 index 0000000000000000000000000000000000000000..fe1c486518d5c73b5bfacf5a1f9e3a6b21386bdc GIT binary patch literal 4071 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