超圖 android 開發(fā)添加點(diǎn)(自定義點(diǎn)樣式和部分功能)

超圖使用一段時(shí)間了, 所寫皆是個(gè)人所感,所學(xué),歡迎指點(diǎn)

最近因?yàn)轫?xiàng)目上的一些規(guī)劃改動(dòng),開始接觸到了超圖,首先我申明,自己真的是一個(gè)小白,才開始使用

但是,使用過程中發(fā)現(xiàn)超圖相關(guān)資源的查詢很少,很多時(shí)候沒辦法只能去官網(wǎng)提問,那個(gè)速度又太慢了,

言歸正傳,今天寫一個(gè)關(guān)于超圖中添加點(diǎn)和給點(diǎn)實(shí)現(xiàn)一些基礎(chǔ)功能


能看到這里的人,超圖的基本引入這些我就不贅述了,


直接進(jìn)入正題:

1: 如何在超圖上添加點(diǎn),


核心代碼:

CallOut callOutView = getCallOutView(dto);

mapview2.addCallout(callOutView);


getCallOutView()方法源碼,說明一下,因?yàn)槲乙o我的這個(gè)添加點(diǎn)動(dòng)態(tài)設(shè)置對應(yīng)的圖標(biāo)和點(diǎn)擊事件,所以我才把我添加點(diǎn)的這個(gè)實(shí)體對象直接傳過去,你可以選擇只傳遞坐標(biāo)過去

方法源碼:

public CallOutgetCallOutView(DzdBean featureBean) {

//這里是自定義的顯示 我就一個(gè)名字和一個(gè)圖標(biāo),稍后會(huì)貼圖顯示

CalloutBinding binding = CalloutBinding.inflate(LayoutInflater.from(context));

? ? CallOut callOut =new CallOut(context);

? ? callOut.setContentView(binding.getRoot());

? ? callOut.setCustomize(true);

? ? callOut.setLocation(featureBean.getX(), featureBean.getY());

? ? String dzlxmc = featureBean.getDzlxmc();

? ? if (dzlxmc !=null) {

String spells = ChineseCharacterHelper.getSpells(dzlxmc);

? ? ? ? // 獲取圖標(biāo)資源的ID? 有一個(gè)叫xxxx? 單獨(dú)處理? 這里是我按照資源的命名,取對應(yīng)名字的資源文件, 你可以直接使用 R.mipmap.xxx

? ? ? ? int iconResourceId = getResources().getIdentifier(spells.toLowerCase().equals("bhkj") ?

"bh" : spells.toLowerCase(), "mipmap", context.getPackageName());

? ? ? ? binding.btnSelected.setImageResource(iconResourceId);

? ? ? ? binding.textAddr.setTag(featureBean);

? ? ? ? callOut.setTag(R.id.text_addr, "" + featureBean.getDzmc());

? ? ? ? binding.btnSelected.setTag(featureBean);

? ? ? ? binding.btnSelected.setTag(R.id.text_addr, "" + featureBean.getDzmc());

? ? ? ? callOut.setOnClickListener(view -> {

if (textAddrShowed !=null) {

textAddrShowed.setVisibility(GONE);

? ? ? ? ? ? ? ? List callouts =mapview2.getCallouts();

? ? ? ? ? ? ? ? for (CallOut callout1 : callouts) {

callout1.setSelected(false);

? ? ? ? ? ? ? ? ? ? callout1.clearAnimation();

? ? ? ? ? ? ? ? }

}

//顯示當(dāng)前標(biāo)題

? ? ? ? ? ? textAddrShowed =binding.textAddr;

? ? ? ? ? ? textAddrShowed.setVisibility(VISIBLE);

? ? ? ? ? ? textAddrShowed.setText(view.getTag(R.id.text_addr).toString());

? ? ? ? });

? ? ? ? binding.btnSelected.setOnClickListener(view -> {

Object tag = view.getTag();

? ? ? ? ? ? if (taginstanceof DzdBean) {

DzdBean featureBean1 = (DzdBean) tag;

? ? ? ? ? ? ? ? Point2D point2D =new Point2D(featureBean1.getX(), featureBean1.getY());

? ? ? ? ? ? ? ? mapControl.panTo(point2D, 200);

? ? ? ? ? ? }

if (textAddrShowed !=null) {

textAddrShowed.setVisibility(GONE);

? ? ? ? ? ? }

//顯示當(dāng)前標(biāo)題

? ? ? ? ? ? textAddrShowed =binding.textAddr;

? ? ? ? ? ? textAddrShowed.setVisibility(VISIBLE);

? ? ? ? ? ? textAddrShowed.setText(view.getTag(R.id.text_addr).toString());

? ? ? ? ? ? selectCallout(callOut);

? ? ? ? ? ? //設(shè)置動(dòng)畫

? ? ? ? ? ? selectCallout(callOut);

? ? ? ? });

? ? }

binding.textAddr.setOnClickListener(view -> {

Object object = view.getTag();

? ? ? ? if (objectinstanceof DzdBean) {

? ? ? ? ? ? DzdBean dzdBean = (DzdBean) object;

? ? ? ? ? ? Long indexId = dzdBean.getId();

? ? ? ? ? ? //跳轉(zhuǎn)到我具體詳情界面,不做更深的展示.

? ? ? ? ? ? goToDetailsById(indexId, dzdBean.getDzmc(), dzdBean.getDzlxid(), dzdBean.getDzlxmc());

? ? ? ? }?

});

? ? return callOut;

}


選中和設(shè)置動(dòng)畫,我就是想給點(diǎn)擊的點(diǎn)有一個(gè)比較不一樣的效果,不僅僅單純的就展示一個(gè)彈出,源碼如下

public void selectCallout(CallOut callOut) {

List callouts =mapview2.getCallouts();

? ? for (CallOut callout1 : callouts) {

callout1.setSelected(false);

? ? ? ? callout1.clearAnimation();

? ? }

callOut.setSelected(true);

? ? setAnimation(callOut);

}

private void setAnimation(CallOut marker) {

// 定義組合動(dòng)畫 -- 我這里就是一個(gè)單純的閃爍動(dòng)畫,你可以按照你的想法自定義動(dòng)畫

? ? android.view.animation.ScaleAnimation scaleAnimation =new android.view.animation.ScaleAnimation(1.0f, 1.0f, 0.9f, 1.0f);

? ? scaleAnimation.setDuration(1000);

? ? scaleAnimation.setRepeatCount(100000);

? ? marker.setAnimation(scaleAnimation);

}



就那么簡單,總結(jié)一下就是給superMap 添加一個(gè)callout的組件? 這里可以自定義樣式,并且在自定義的樣式完成自己想要的一些功能.沒那么多廢話,都是直接上的干貨.下一篇準(zhǔn)備寫添加線


對了 還是貼幾張效果圖:

展示效果:

點(diǎn)擊的選中效果(很明顯我這個(gè)動(dòng)畫比較粗糙)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容