超圖使用一段時(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)畫比較粗糙)
