校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > 基于高德地圖標(biāo)注實(shí)現(xiàn)完全自定義Marker

基于高德地圖標(biāo)注實(shí)現(xiàn)完全自定義Marker

熱門(mén)標(biāo)簽:百融智能外呼系統(tǒng)說(shuō)明書(shū) 山東銀行智能外呼系統(tǒng)價(jià)格 自動(dòng)撥號(hào)座機(jī)和外呼系統(tǒng) 騰訊地圖標(biāo)注補(bǔ)貼店 遼寧保險(xiǎn)智能外呼系統(tǒng)價(jià)格 離線地圖標(biāo)注下載 外呼系統(tǒng)值不值得代理 咸寧電銷(xiāo)機(jī)器人收費(fèi) 語(yǔ)音機(jī)器人對(duì)電銷(xiāo)工作者有用嗎
1746 做地圖社交類(lèi)APP開(kāi)發(fā)的都知道,一般情況下,為了整體的美觀和用戶體驗(yàn)度,我們需要定制化Marker的樣式。本文中實(shí)現(xiàn)的方式都是基于高德地圖標(biāo)注的,百度地圖也類(lèi)似,大家可以照葫蘆畫(huà)瓢,廢話不多說(shuō),先來(lái)看看最終效果:
實(shí)現(xiàn)思路:
先來(lái)看看高德官方提供的設(shè)置Marker圖標(biāo)的方法: 我們可以看到setIcon()方法,里面的參數(shù)BitmapDescriptor就是我們最終需要的東西。那么到底該如何得到這個(gè)BitmapDescriptor對(duì)象呢,其實(shí)很簡(jiǎn)單,該對(duì)象可以通過(guò)BitmapDescriptorFactory工廠類(lèi)獲取,BitmapDescriptorFactory提供了以下方法來(lái)得到BitmapDescriptor對(duì)象:
/** * 1.通過(guò)資源id獲取 */public static BitmapDescriptor fromResource(int var0) { ......}/** * 2.通過(guò)自定義的view獲取 */ public static BitmapDescriptor fromView(View var0) { ...... }/** * 3.通過(guò)具體路徑資源獲取 */ public static BitmapDescriptor fromPath(String var0) { ......}/** * 4.通過(guò)具體Assets資源獲取 */ public static BitmapDescriptor fromAsset(String var0) { ...... }/** * 5.通過(guò)具體文件獲取 */public static BitmapDescriptor fromFile(String var0) { ......}/** * 6.通過(guò)bitmap獲取 */ public static BitmapDescriptor fromBitmap(Bitmap var0) { ......}123456789101112131415161718192021222324252627282930313233343536373839404142
從以上官方提供的方法可以看到,得到BitmapDescriptor對(duì)象的方式有多種,我們可以根據(jù)自己需要自行選擇。但是,為了應(yīng)對(duì)頻繁的需求變化,我們肯定要選擇更為動(dòng)態(tài),靈活的方式來(lái)應(yīng)付我們的需求變化,我們就可以選擇fromView()和fromBitmap()兩種方式來(lái)得到BitmapDescriptor對(duì)象了。這里選用fromBitmap()方式來(lái)得到BitmapDescriptor對(duì)象吧,因?yàn)椴捎胒romView()方法獲取后有個(gè)巨坑,這個(gè)后面再說(shuō)。
如果我們要根據(jù)需求自定義Marker,當(dāng)然是希望能夠讓它可大可小,可動(dòng)可靜了,那就非view莫屬了。只要我們可以自定義view布局,然后轉(zhuǎn)化成bitmap不就OK了嗎,好,說(shuō)干就干,我們以自定義Makrer樣式并加載網(wǎng)絡(luò)圖片為例,開(kāi)干!
定制化Marker布局,加載網(wǎng)絡(luò)圖片:
我們就以實(shí)現(xiàn)以下Marker的樣式為例:
這個(gè)樣式比較簡(jiǎn)單,只要一個(gè)CircleImageView外面套一個(gè)固定的容器就可以了,直接看布局代碼:
marker_bg.xml:
123456789101112131415161718192021
下面看一下代碼中如何使用:
/** * by moos on 2017/11/13 * func:定制化marker的圖標(biāo) * @return */ private void customizeMarkerIcon(String url, final OnMarkerIconLoadListener listener){ final View markerView = LayoutInflater.from(this).inflate(R.layout.marker_bg,null); final CircleImageView icon = (CircleImageView) markerView.findViewById(R.id.marker_item_icon); Glide.with(this) .load(url+"!/format/webp") .asBitmap() .thumbnail(0.2f) .diskCacheStrategy(DiskCacheStrategy.NONE) .centerCrop() .into(new SimpleTargetBitmap>(){ @Override public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) { //待圖片加載完畢后再設(shè)置bitmapDes icon.setImageBitmap(bitmap); bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(convertViewToBitmap(markerView)); listener.markerIconLoadingFinished(markerView); } }); }....../** * by moos on 2017/11/15 * func:自定義監(jiān)聽(tīng)接口,用來(lái)marker的icon加載完畢后回調(diào)添加marker屬性 */ public interface OnMarkerIconLoadListener{ void markerIconLoadingFinished(View view); }12345678910111213141516171819202122232425262728293031323334353637383940
這部分代碼也不是很難,我就簡(jiǎn)單講講思路。首先加載布局后,拿到里面的控件CircleImageView,并使用常用的Glide圖片加載框架來(lái)加載網(wǎng)絡(luò)圖片。可能會(huì)有人問(wèn),為什么關(guān)閉Glide的緩存設(shè)置呢?關(guān)注到這點(diǎn)的人還是比較細(xì)心的,我們使用glide加載大量marker布局的時(shí)候,如果社會(huì)了緩存選項(xiàng),那么就可能會(huì)出現(xiàn)相同圖片只顯示一張的狀況,這個(gè)如果不信的話可以自行實(shí)驗(yàn)。下面來(lái)說(shuō)說(shuō)另一個(gè)問(wèn)題,也就是剛剛我們?yōu)槭裁催x擇fromBitmap()而不是fromView()方法,因?yàn)橹坝胒romView()時(shí)發(fā)現(xiàn)添加的第一個(gè)marker并不會(huì)加載出圖片,而只是顯示默認(rèn)的占位圖。即使通過(guò)在Glide加載圖片的回調(diào)方法onResourceReady()設(shè)置也依然無(wú)效,這個(gè)問(wèn)題大家不信邪也可以試試看看,這就是最終為什么選擇fromBitmap()方法的原因。這里還使用了自定義的接口來(lái)傳入markerView,方便后面的二次開(kāi)發(fā),然后在回調(diào)方法markerIconLoadingFinished()方法中設(shè)置marker的圖標(biāo)。
將view轉(zhuǎn)化為bitmap對(duì)象:
/** * by mos on 2017.11.13 * func:view轉(zhuǎn)bitmap */ public static Bitmap convertViewToBitmap(View view) { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); return bitmap; }1234567891011121314151617
網(wǎng)上相關(guān)方法很多,這里就不介紹了,有興趣可以去百度一下。
批量添加自定義的Marker到地圖上:
先來(lái)看看代碼:
/** * by moos on 2017/11/15 * func:添加marker到地圖上顯示 */ BitmapDescriptor bitmapDescriptor ; private void addMarker(final ImageNearBean.DataBean.ExhibitionListBean bean) { double lat; double lon; lat = bean.getLatitude(); lon = bean.getLongitude(); LatLng latLng = new LatLng(lat, lon, false); loge("添加maker前的類(lèi)型為==="+bean.getUserType()); String url = bean.getUserLogo(); final MarkerOptions markerOptions = new MarkerOptions(); markerOptions.setFlat(true); markerOptions.anchor(0.5f, 0.5f); markerOptions.position(new LatLng(lat, lon)); customizeMarkerIcon(url, bean.getTeamName(),new OnMarkerIconLoadListener() { @Override public void markerIconLoadingFinished(View view) { //bitmapDescriptor = BitmapDescriptorFactory.fromView(view); markerOptions.icon(bitmapDescriptor); Marker marker; marker = mAMap.addMarker(markerOptions); //marker.setObject(cluster); } }); } /** * by moos on 2017/11/15 * func:批量添加marker到地圖上 */ private void addMarkersToMap(){ runOnUiThread(new Runnable() { @Override public void run() { for(int i = 0;iallBussinessBean.size();i++){ addMarker(allBussinessBean.get(i)); } } }); }12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
既然marker樣式定制完畢,BitmapDescriptor也拿到了,那么下面就簡(jiǎn)單了,應(yīng)該就不需要我多說(shuō)了,只要注意一點(diǎn),批量添加marker一般比較耗時(shí),盡量放在子線程處理。
到這里,自定義marker就實(shí)現(xiàn)了,這應(yīng)該可以適用于多數(shù)情況了,一路看下來(lái),是不是也挺簡(jiǎn)單的,只要用心思考研究就好了,而且搞定后有很強(qiáng)的工作動(dòng)力有木有!

標(biāo)簽:淮北 清遠(yuǎn) 中衛(wèi) 臨夏 嘉峪關(guān) 自貢 綏化 濟(jì)寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于高德地圖標(biāo)注實(shí)現(xiàn)完全自定義Marker》,本文關(guān)鍵詞  基于,高德,地圖,標(biāo)注,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于高德地圖標(biāo)注實(shí)現(xiàn)完全自定義Marker》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于基于高德地圖標(biāo)注實(shí)現(xiàn)完全自定義Marker的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    美女视频免费一区| 国产福利视频一区二区三区| 国产成人综合自拍| 国产精品卡一卡二| 99久久精品国产麻豆演员表| 亚洲品质自拍视频| 555夜色666亚洲国产免| 久久国内精品自在自线400部| 久久久久一区二区三区四区| 99综合影院在线| 亚洲成人免费影院| www激情久久| 欧美婷婷六月丁香综合色| 日本aⅴ亚洲精品中文乱码| 欧美成人a视频| 91亚洲精品久久久蜜桃| 日本va欧美va欧美va精品| 国产精品免费久久| 7878成人国产在线观看| 成人av影院在线| 欧美aⅴ一区二区三区视频| 国产婷婷色一区二区三区| 欧美天堂亚洲电影院在线播放| 激情小说欧美图片| 一区二区三区精品在线| 久久久.com| 欧美另类一区二区三区| 成人性生交大片免费看中文 | 欧美一区在线视频| 不卡av在线网| 国产一区在线观看视频| 亚洲第一在线综合网站| 国产精品久久久久久久久动漫| 精品国产一区二区三区av性色| 一本色道久久综合亚洲aⅴ蜜桃| 久久99热这里只有精品| 亚洲国产一二三| 国产精品久久久久久久久图文区| 欧美成人一区二区三区片免费| 在线观看91视频| 91在线视频官网| av网站免费线看精品| 国产成a人亚洲| 国产精品99久久久久久宅男| 美女国产一区二区| 美女任你摸久久| 另类欧美日韩国产在线| 老司机午夜精品| 韩国一区二区在线观看| 激情文学综合丁香| 国产成人免费av在线| 国产麻豆午夜三级精品| 国产成人高清视频| 国产盗摄视频一区二区三区| 成人激情av网| 91国偷自产一区二区开放时间| 日本道精品一区二区三区| 色狠狠综合天天综合综合| 在线观看av一区| 91精品国产日韩91久久久久久| 日韩色视频在线观看| 精品黑人一区二区三区久久| 精品理论电影在线| 国产午夜一区二区三区| 国产精品大尺度| 一区二区三区四区在线播放| 日韩精彩视频在线观看| 国产一区二区三区久久久| 国产成人一级电影| 91在线云播放| 91精品国产综合久久久久久漫画| 欧美电影免费观看高清完整版| 国产欧美一区视频| 亚洲蜜桃精久久久久久久| 日韩有码一区二区三区| 国产成人自拍高清视频在线免费播放| 国产精品自拍三区| 日本乱码高清不卡字幕| 日韩亚洲国产中文字幕欧美| 久久久亚洲国产美女国产盗摄 | 不卡高清视频专区| 91色乱码一区二区三区| 欧美日韩国产中文| 久久精品亚洲国产奇米99| 尤物av一区二区| 精品一区二区久久久| 成人av综合在线| 6080午夜不卡| 亚洲女与黑人做爰| 蜜桃久久精品一区二区| 99久久综合99久久综合网站| 欧美日韩国产在线观看| 国产亚洲一区二区在线观看| 亚洲国产精品久久一线不卡| 久久精品国产一区二区三| 91丨九色丨尤物| 欧美成人欧美edvon| 亚洲三级电影网站| 久久精工是国产品牌吗| 欧美网站大全在线观看| 国产精品国产三级国产普通话蜜臀 | 在线视频一区二区三| 精品第一国产综合精品aⅴ| 亚洲男同1069视频| 国产成人av一区二区三区在线| 8v天堂国产在线一区二区| 1000部国产精品成人观看| 国产精品一区免费视频| 欧美va亚洲va| 日本午夜一本久久久综合| 欧美视频一区在线观看| 日韩伦理免费电影| 成人做爰69片免费看网站| 26uuu色噜噜精品一区| 丝袜诱惑制服诱惑色一区在线观看 | 五月天国产精品| 日本伦理一区二区| 亚洲女爱视频在线| 一本到不卡精品视频在线观看| 国产人久久人人人人爽| 国产大陆精品国产| 欧美激情在线一区二区| 国产在线不卡一卡二卡三卡四卡| 日韩一区二区三区视频在线观看| 午夜精品久久久久久久久久| 欧美婷婷六月丁香综合色| 亚洲电影第三页| 欧美日韩高清影院| 首页综合国产亚洲丝袜| 欧美男男青年gay1069videost| 亚洲不卡一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 欧美激情综合在线| 国产盗摄精品一区二区三区在线| 精品国产a毛片| 国产精品白丝av| 亚洲素人一区二区| 欧美在线看片a免费观看| 亚洲一区在线观看免费| 欧美日本免费一区二区三区| 日本免费在线视频不卡一不卡二 | 亚洲人成电影网站色mp4| 97国产一区二区| 午夜影视日本亚洲欧洲精品| 欧美精品欧美精品系列| 久久99精品久久久久婷婷| 国产欧美一区二区三区在线看蜜臀 | 国产精品国产三级国产有无不卡| 日本乱人伦一区| 免费不卡在线观看| 久久伊99综合婷婷久久伊| av亚洲精华国产精华精| 亚洲成人精品在线观看| 91精品午夜视频| 高清在线观看日韩| 亚洲精品菠萝久久久久久久| 91精品欧美久久久久久动漫| 国产成人免费在线观看| 亚洲成a人在线观看| www国产成人| 欧美午夜精品一区二区蜜桃| 精品中文字幕一区二区 | 国产精品久久久久永久免费观看| 欧美影片第一页| 久久综合综合久久综合| 一区二区三区丝袜| 精品不卡在线视频| 色婷婷久久综合| 国产毛片精品国产一区二区三区| 亚洲永久免费视频| 国产天堂亚洲国产碰碰| 精品视频1区2区3区| 豆国产96在线|亚洲| 性久久久久久久久| 国产欧美日韩亚州综合| 日韩三级在线观看| 色婷婷综合久色| 国产丶欧美丶日本不卡视频| 日韩激情一二三区| 亚洲人妖av一区二区| 精品久久久久香蕉网| 欧美中文一区二区三区| 成人午夜精品一区二区三区| 久久99九九99精品| 亚洲va国产va欧美va观看| 亚洲图片激情小说| 久久久九九九九| 亚洲va欧美va国产va天堂影院| 中文字幕在线一区免费| 久久久久久久久久久久久久久99 | 在线观看亚洲精品| 99免费精品视频| 成人精品视频一区二区三区尤物| 捆绑变态av一区二区三区| 午夜久久电影网| 亚洲影视在线播放| 一区二区三区成人在线视频| 亚洲天堂成人网| 亚洲免费观看高清完整版在线 | 国产三级欧美三级日产三级99|