百度地图之添加覆盖物

百度地图定位及覆盖物添加 简单的百度地图定位及覆盖物添加的Demo 立即下载

前面我们关于百度地图的SDK的博客已经写了不少了,不过为了把地图这个功能做的更完善一些,同时也为了提高自己的技术,我们还是可以在目前所具有的功能之上再添加一些功能。

今天这篇博客,我就讲讲如何在地图上添加覆盖物。

一,和实现显示导航的图标一样,我们需要实例化一个BitmapDescriptor实例,然后调用BitmapDescriptorFactory的fromSource()方法,传入资源文件,这样的话,我们就可以在地图上出现覆盖物图标的第一步。
二,在Toolbar标题栏上面添加一个item选项,然后在 public boolean onOptionsItemSelected(MenuItem item){
}里面添加点击item之后的逻辑事件。不过在这之前,我们要准备好另外一个类,这个类里面放上我们覆盖物需要的一些参数。
//添加覆盖物图片
比如我新建了一个info类,然后在这个类里面来设置一些覆盖物的参数。

public class info implements Serializable{
    //private static final long serialVersionUID = -1010711775392052966L;
    private double latitude;
    private double longitude;
    private int zan;
    private String name;
    private int imgId;
    private String distance;
    public static List<info> infos = new ArrayList<info>();
    static
    {
        infos.add(new info(34.242652, 108.971171, R.drawable.a01, "英伦贵族小旅馆",
                "距离209米", 1456));
        infos.add(new info(34.242952, 108.972171, R.drawable.a02, "沙井国际洗浴会所",
                "距离897米", 456));
        infos.add(new info(34.242852, 108.973171, R.drawable.a03, "五环服装城",
                "距离249米", 1456));
       infos.add(new info(34.242152, 108.971971, R.drawable.a04, "老米家泡馍小炒",
               "距离679米", 1456));
    }
    public info(double latitude, double longitude, int imgId, String name,
                String distance, int zan)
    {
        this.latitude = latitude;
        this.longitude = longitude;
        this.imgId = imgId;
        this.name = name;
        this.distance = distance;
        this.zan = zan;
    }
    public double getLatitude()
    {
        return latitude;
    }
    public void setLatitude(double latitude)
    {
        this.latitude = latitude;
    }
    public double getLongitude()
    {
        return longitude;
    }
    public void setLongitude(double longitude)
    {
        this.longitude = longitude;
    }
    public int getImgId()
    {
        return imgId;
    }
    public void setImgId(int imgId)
    {
        this.imgId = imgId;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getDistance()
    {
        return distance;
    }
    public void setDistance(String distance)
    {
        this.distance = distance;
    }
    public int getZan()
    {
        return zan;
    }
    public void setZan(int zan)
    {
        this.zan = zan;
    }
}

三,准备好info类以后,我们就开始写点击item后的逻辑事件。

 case R.id.id_add:
                addOverlays(info.infos);
                break;
 private void addOverlays(List<info> infos)
    {
        baiduMap.clear();
        LatLng latLng = null;
        Marker marker = null;
        OverlayOptions options;
        for (info info : infos)
        {
            latLng = new LatLng(info.getLatitude(), info.getLongitude());// 经纬度

            options = new MarkerOptions()
                    .position(latLng)
                    .icon(mMarker)// 图标
                    .zIndex(5);
            marker = (Marker) baiduMap.addOverlay(options);
            Bundle arg0 = new Bundle();
            arg0.putSerializable("info", info);
            marker.setExtraInfo(arg0);
        }
        MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
        baiduMap.setMapStatus(msu);
    }

这样的话,我们就把点击item,就可以显示出marker。
四,准备布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="220dp"
    android:background="#cc4e5a6b" >

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="150dp"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="12dp"
        android:layout_marginRight="12dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/img_border"
        android:scaleType="fitXY"
        android:src="@drawable/a01" >
    </ImageView>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:background="@drawable/bg_map_bottom" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:orientation="vertical" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="老米家泡馍"
                android:textColor="#fff5eb" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="距离200米"
                android:textColor="#fff5eb" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="20dp"
            android:orientation="horizontal" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/map_zan"
                android:clickable="true" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="789"
                android:layout_gravity="center"
                android:textColor="#fff5eb" />
        </LinearLayout>
    </RelativeLayout>

</RelativeLayout>

然后我们贴一张效果图
这里写图片描述

五,点击marker的逻辑事件

//设置marker的点击事件
        baiduMap.setOnMarkerClickListener(new OnMarkerClickListener()
        {
            @Override
            public boolean onMarkerClick(Marker marker)
            {
                Bundle extraInfo = marker.getExtraInfo();
                info info = (info) extraInfo.getSerializable("info");
                ImageView iv = (ImageView) mMarkerLy
                        .findViewById(R.id.id_info_img);
                TextView distance = (TextView) mMarkerLy
                        .findViewById(R.id.id_info_distance);
                TextView name = (TextView) mMarkerLy
                        .findViewById(R.id.id_info_name);
                TextView zan = (TextView) mMarkerLy
                        .findViewById(R.id.id_info_zan);
                iv.setImageResource(info.getImgId());
                distance.setText(info.getDistance());
                name.setText(info.getName());
                zan.setText(info.getZan() + "");//把赞的类型由int 变成String
                 mMarkerLy.setVisibility(View.VISIBLE);
                return true;
            }
        });

不过,我们同样也要设置点击地图其他位置时候,让marker消失。

baiduMap.setOnMapClickListener(new OnMapClickListener()
        {

            @Override
            public boolean onMapPoiClick(MapPoi arg0)
            {
                return false;
            }

            @Override
            public void onMapClick(LatLng arg0)
            {
                mMarkerLy.setVisibility(View.GONE);
            }
        });

六,我们还希望在点击marker的时候,还希望在marker上面添加一行文字说明。
这时候我们需要实例化一个infowindow对象,然后给infowindow实例添加一些参数。

InfoWindow infoWindow;
                TextView tv = new TextView(context);
                tv.setBackgroundResource(R.drawable.location_tips);
                tv.setPadding(30, 20, 30, 50);
                tv.setText(info.getName());
                tv.setTextColor(Color.parseColor("#ffffff"));
                BitmapDescriptor tips = BitmapDescriptorFactory.fromView(tv);
                final LatLng latLng = marker.getPosition();
                Point p = baiduMap.getProjection().toScreenLocation(latLng);
                p.y -= 47;
                LatLng ll = baiduMap.getProjection().fromScreenLocation(p);
                infoWindow = new InfoWindow(tips, ll,p.y,
                        new OnInfoWindowClickListener()
                        {
                            @Override
                            public void onInfoWindowClick()
                            {
                                baiduMap.hideInfoWindow();
                            }
                        });
                baiduMap.showInfoWindow(infoWindow);

,这样的话,我们离大功告成就只有一步之遥了。我们需要在 baiduMap.setOnMapClickListener(new OnMapClickListener(){
}方法里面添加一句baiduMap.hideInfoWindow();用来隐藏infowindow.

YOLOv8n模型导出ONNX的避坑指南:解决版本差异,正确生成TensorRT/RKNN所需输出节点 本文详细介绍了YOLOv8n模型导出ONNX格式的实战避坑指南,涵盖版本差异处理、代码修改技巧及TensorRT/RKNN部署优化方案。针对不同推理框架需求,提供输出节点生成、动态轴处理和后处理划分等核心问题的解决方案,帮助开发者高效完成模型部署。 阅读详情

相关推荐

vivado实现SDI接口

XAPP1249,用来介绍UHD_SDI的实现。

Huskar_Liu的博客 7076

百度地图 ( 二 ) 添加覆盖物

百度地图 ( 二 ) 添加覆盖物

yuanchun的知识整理 4565

ATAC-seq差异分析实战:从原始数据到GO富集(R/Bioconductor全流程)

本文提供了ATAC-seq差异分析的完整R/Bioconductor实战流程,涵盖从原始数据准备、一致峰集构建、计数矩阵生成,到使用DESeq2进行差异可及性分析,以及差异峰的基因组注释与GO富集分析。文章详细讲解了关键步骤、参数设置和常见问题,旨在帮助研究者获得可靠且可解释的生物学结果。

weixin_29246195的博客 228

百度离线地图覆盖物动态增加(多边形、标记点)

ps:因为地图外层加了el-scrollbar,会干扰地图的缩放,所以自己写了个方法缩放。红色编辑点:点击地图新增出来或者根据数据赋值过来,可拖拽移动。

Holly31的博客 1209

如何在huggingface上申请下载使用llama2/3模型

huggingface-cli download --resume-download 模型名称 --local-dir 存放模型的位置 --local-dir-use-symlinks False --resume-download --token token序列号xxxxxxx。登录huggingface,在模型详情页面上,找到这个表单,填写内容,提交申请。需要使用梯子,country填写梯子的位置吧(比如美国)等待一小时左右,会有邮件通知。

a61022706的博客 1万+

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

综上,大多数工作均基于CLIP预训练的图像编码器和文本编码器。GlIP为解决目标检测任务提供了先例,后续很多工作常与目前较为广泛使用的目标检测网络结构相结合,从而构建新的开放词汇目标检测器。如ViLD基于Mask R-CNN、RegionCLIP基于R-CNN、VLDet和BARON基于Faster R-CNN。更具有创新性的工作是Detic,提出了使用图像分类的数据集来对目标检测器的分类头进行训练。

yangsn0719的博客 4400

在百度地图上添加覆盖物,并且可以移动覆盖物

实现的思路: 引入覆盖物的坐标点数据,对于本地mock的数据,可以写在js文件中,用变量接收一下,然后在当前文件中引入,直接使用对于的变量即可拿到mock的数据。试过使用json数据,但总会出现跨域问题,果断放弃了。 地图展示 在地图上添加覆盖物 循环给覆盖物添加需要的属性,如ply.name=xx 如果百度地图和外部列表联合使用,外部列表需要使用到覆盖物中的某个属性,需要将地图的所有覆盖物暴...

weixin_44471622的博客 2086

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码,仅供学习及设计参考。

GJZGRB的博客 1416

【百度地图:添加图标覆盖物、覆盖物点击事件功能总结】

百度地图:添加图标覆盖物、覆盖物点击事件

qq_41238459的博客 951

从 ABAP 视角看 JSON :7.40 版本带来的那些改变

摘要:ABAP 对 JSON 的原生支持 随着企业系统与外部 API 的交互增多,ABAP 从 NetWeaver 7.40 开始原生支持 JSON 格式。通过复用现有 XML 基础设施,ABAP 团队引入 JSON-XML 概念,使用 sXML Library 和 IF_SXML=>CO_XT_JSON 常量处理 JSON 数据。开发人员可通过 CALL TRANSFORMATION 语句实现 ABAP 数据与 JSON 的双向转换,大幅简化了与外部系统的数据交互。这种标准化的 JSON 处理方式提

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 180

华为昇腾(Ascend)开发考试原题目解析 (2024) (题库一)——HCIP-AI-Ascend Developer——第一部分

给出一段代码如下,以下哪个选项描述错误?...A.中的语句由 MindSpore 接管,有语法限制B. 算子在中定义,并用来建立网络C.__init__()中的语句由 Python 解析执行D. 网络定义必须继承基类nn.Cell正确答案: B__init__()用于定义算子和网络层。所有需要用到的层(如卷积层、全连接层等)都应该在这里进行实例化。这部分代码由Python解释器执行。用于构建前向计算图。它调用在__init__()中定义好的算子和层来描述数据的流向。

qq_38334677的博客 1053

在vue项目中使用百度地图,并添加覆盖物,多个点标注

在vue项目中使用百度地图,并批量添加点标注以及覆盖物

sunweixin8的博客 2823

数据分析案例-对某宝用户评论做情感分析

目录 原始数据 绘制词云图 情感分析 原始数据 原始数据为某宝一商品的用户评论数据 绘制词云图 # coding=utf-8 import jieba import re import wordcloud import imageio # 打开需要分析词频的文本 with open('淘宝评论3.0.txt', encoding='utf-8') as f: data = f.read() # 文本预处理 :去除一些无用的字符只提取出中文出来 new_data

m0_64336780的博客 1万+

百度地图自定义覆盖物添加与删除,ComplexCustomOverlay方法添加自定义覆盖物

百度地图自定义覆盖物添加和删除

weixin_44849078的博客 4846

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

百度地图学习总结(4)—添加覆盖物

0.前言:上篇讲了定位这篇我们来讲如何添加覆盖物。 先看效果图:本文就是要实现这么一个效果图:1.模拟数据传入并生成覆盖物: /*** * 初始化图层 * 这一段代码一旦执行,地图上就出现了所传入的覆盖物信息 * @param infos 模拟数据,覆盖物的点 */ public void addInfosOverlay(List<Info>

点滴积累 1152

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

百度地图 v3.5 根据数据源添加很多覆盖物和监听这些覆盖物,处理覆盖物重叠,点击添加覆盖物

在上一片博客中已经讲述了如何定位,这里主要讲根据数据源来添加覆盖物,在百度的demo中就只是演示了他固定添加了几个覆盖物,但是在实际项目中需要添加的添加的覆盖物就不是固定的,需要根据list集合数据源来添加,并且需要为这些覆盖物添加上对应的点击事件。 markers=new Marker[rodlist.size()]; for (int i=0;i<rodlis

sinat_23134455的专栏 5097

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

百度地图之添加覆盖物并响应事件

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 本文中将介绍在百度地图上添加覆盖物的功能、响应点击功能和弹出pop功能,代码来自百度Demo: Activity: package com.home; import java.util.ArrayList;...

孤云博客 6923

百度地图js api 为覆盖物添加索引

<script type="text/javascript"> // 百度地图API功能 var map = new BMap.Map("allmap"); var pointArray = []; map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5); map.enableSc...

wcdunf的博客 446

vue中如何添加百度地图及覆盖物小图片

1.申请AK **http://lbsyun.baidu.com/apiconsole/key** 2、在vue项目的public文件夹下的index.html中引入脚本 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script> 定位 在mounted中定义: ```css mounted() { var map = new BMap.Map

dell_wu_gao_jian的博客 1671

百度地图开发(二)之添加覆盖物 + 地理编码和反地理编码

之前写过一篇关于百度地图开发的blog,主要介绍了百度地图的基本地图的显示。     详见:Android百度地图开发(一)之初体验     下面来看一下地图上覆盖物的添加,以及地理编码和反地理编码。 添加覆盖物     在地图上添加覆盖物,一般需要以下几个步骤:     1. 定义坐标点,有可能是一个,有可能是多个(比如:多边形覆盖物)。     2. 构造OverlayOption

crazy_jack 7万+

Android使用百度地图---添加覆盖物及定位

完成百度地图的创建,可是还不是我们需要的,接下来我需要给它添加覆盖物,并定位当前位置: 首先,定位需要的权限 【重要提醒】 定位SDKv3.1版本之后,以下权限已不需要,请取消声明,否则将由于Android 5.0多帐户系统加强权限管理而导致应用安装失败。  其次,在AndroidManifest.xml中添加定位服务: 以上这两个

dream_monkey的专栏 4197

在百度地图添加覆盖物附带文字

本人写在 eoe论坛的文章,http://www.eoeandroid.com/thread-260821-1-1.html 思路:因为百度地图添加覆盖物只能是图片,就是只能添加格式为 Drawable 的图片,而我们需要添加的文字是Textview,不能使用,已经百度查看,Drawable有子类BitmapDrawable,而BitmapDrawable可以由Bitmap生成,Layout

L有只大大熊 4459

vuebaidumap 删除覆盖物_百度地图API示例:使用vue添加删除覆盖物

1、index.html2、vue组件,HTML部分添加删除全部删除折线删除圆3、vue组件,JS部分export default {data() {return {}},methods: {_getMapData() {let map = new BMap.Map("firePowerMap"); // 创建Map实例let point = new BMap.Point(116.404, 39...

weixin_39742065的博客 671

android百度地图 添加覆盖物Marker与InfoWindow的使用

如何添加覆盖物,实现周边搜索,以及对覆盖物的点击出现介绍等效果。 效果图: 我们的需求是,当用户点击衣食住行,或者对对附近搜索是,从服务器返回数据(经纬度,商家信息,介绍等),然后动态生成覆盖物,实现上述效果。关于图片,由于手机上的内存的有限性,所有的图片下载完成都应该存入预设的缓存中,例如LruCache,然后需要的时候从缓存取,缓存没有,下载完成放入缓存;即实现所有的图

成长的味道 4044

百度地图API加载GEOJSON作为地图的覆盖物示例,并给覆盖物添加文字标签

用百度地图API请求geojson文件并加载到百度地图上,然后图层设置文字标签。点击对应图层多选框控制图层的显隐性。 <!DOCTYPE html> <html> <head> <title>道路、网格点位</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport"

du_5pet的博客 8484

百度地图之覆盖物添加删除

map.addOverlay(marker); //增加点 方法: var marker = new BMap.Marker(new BMap.Point(116.404, 39.915)); // 创建点 map.addOverlay(polyline); //增加折线 方法: var polyline = new BMap.P...

qq_41537416的博客 1639
上一篇: Material Design之侧滑
下一篇: 探究服务(一)---异步消息处理流程
OneLinee
博客等级 码龄10年 11粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值