美文网首页
超图 android 开发添加点(自定义点样式和部分功能)

超图 android 开发添加点(自定义点样式和部分功能)

作者: 渺渺兮予怀_ | 来源:发表于2023-08-03 10:17 被阅读0次

超图使用一段时间了, 所写皆是个人所感,所学,欢迎指点

最近因为项目上的一些规划改动,开始接触到了超图,首先我申明,自己真的是一个小白,才开始使用

但是,使用过程中发现超图相关资源的查询很少,很多时候没办法只能去官网提问,那个速度又太慢了,

言归正传,今天写一个关于超图中添加点和给点实现一些基础功能

能看到这里的人,超图的基本引入这些我就不赘述了,

直接进入正题:

1: 如何在超图上添加点,

核心代码:

CallOut callOutView = getCallOutView(dto);

mapview2.addCallout(callOutView);

getCallOutView()方法源码,说明一下,因为我要给我的这个添加点动态设置对应的图标和点击事件,所以我才把我添加点的这个实体对象直接传过去,你可以选择只传递坐标过去

方法源码:

public CallOutgetCallOutView(DzdBean featureBean) {

//这里是自定义的显示 我就一个名字和一个图标,稍后会贴图显示

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);

        // 获取图标资源的ID  有一个叫xxxx  单独处理  这里是我按照资源的命名,取对应名字的资源文件, 你可以直接使用 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();

                }

}

//显示当前标题

            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);

            }

//显示当前标题

            textAddrShowed =binding.textAddr;

            textAddrShowed.setVisibility(VISIBLE);

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

            selectCallout(callOut);

            //设置动画

            selectCallout(callOut);

        });

    }

binding.textAddr.setOnClickListener(view -> {

Object object = view.getTag();

        if (objectinstanceof DzdBean) {

            DzdBean dzdBean = (DzdBean) object;

            Long indexId = dzdBean.getId();

            //跳转到我具体详情界面,不做更深的展示.

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

        } 

});

    return callOut;

}

选中和设置动画,我就是想给点击的点有一个比较不一样的效果,不仅仅单纯的就展示一个弹出,源码如下

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) {

// 定义组合动画 -- 我这里就是一个单纯的闪烁动画,你可以按照你的想法自定义动画

    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);

}

就那么简单,总结一下就是给superMap 添加一个callout的组件  这里可以自定义样式,并且在自定义的样式完成自己想要的一些功能.没那么多废话,都是直接上的干货.下一篇准备写添加线

对了 还是贴几张效果图:

展示效果:

点击的选中效果(很明显我这个动画比较粗糙)

相关文章

网友评论

      本文标题:超图 android 开发添加点(自定义点样式和部分功能)

      本文链接:https://www.haomeiwen.com/subject/kjcdnrtx.html