博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百度地图绘制点、图形
阅读量:6275 次
发布时间:2019-06-22

本文共 3057 字,大约阅读时间需要 10 分钟。

目标:

1,指定经纬度,显示一个图片,点击图片能显示相应的介绍信息2,当前屏幕把所有指定的坐标点都显示出来

预览效果:添加了四个点,红色定位图片表示出来

clipboard.png


实现

  1. 准备条件:

    配置百度地图,只要能findViewById(R.id.baidumap)能显示百度地图就ok
    定位图片
    clipboard.png

    四个点经纬度

    (23.17859302386026,113.41829099999994);   (23.174924078737078,113.41754841746837);   (23.172392232625878,113.41464769219638);   (23.15051685805627,113.4161170382473);
  2. 代码实现
//构建Marker图标        BitmapDescriptor bd = BitmapDescriptorFactory                .fromResource(R.drawable.location_ic_select);
// 初始化四个点        List
list = new ArrayList<>(); LatLng point1 = new LatLng(23.17859302386026,113.41829099999994); LatLng point2 = new LatLng(23.174924078737078,113.41754841746837); LatLng point3 = new LatLng(23.172392232625878,113.41464769219638); LatLng point4 = new LatLng(23.15051685805627,113.4161170382473); list.add(point1); list.add(point2); list.add(point3); list.add(point4);
//创建OverlayOptions的集合        List
options = new ArrayList
(); for(LatLng point:list){ //创建OverlayOptions属性 OverlayOptions option1 = new MarkerOptions() .position(point) .icon(bd); //将OverlayOptions添加到list options.add(option1); } //在地图上批量添加 mBaiduMap.addOverlays(options); // 让手机屏幕显示出所有点 mBaiduMap.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() { @Override public void onMapLoaded() { LatLngBounds.Builder builder = new LatLngBounds.Builder(); for(LatLng latLng : list){ builder = builder.include(latLng); } LatLngBounds latlngBounds = builder.build(); MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(latlngBounds,mMapView.getWidth(),mMapView.getHeight()); mBaiduMap.animateMapStatus(u); } });

以上代码便能在地图上显示出四个点了

clipboard.png

3. 图标点击事件:点击图标后显示一些信息

clipboard.png

// 每个图标都是一个Marker,通过百度地图的Marker的点击事件来达到想要的效果            mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {            @Override            public boolean onMarkerClick(Marker marker) {                // 构建一个需要显示的view,我这里只是一个textview,也可以是其他的布局                TextView tv = new TextView(mContext);                tv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));                tv.setBackgroundResource(R.drawable.shape_buttn_text);                tv.setText("hello world");                // -130表示的是y轴的便宜量                InfoWindow infoWindow =new InfoWindow(tv,marker.getPosition(),-130);                //通过百度地图来显示view                mBaiduMap.showInfoWindow(infoWindow);                return true;            }        });
4. 点击非图标区域隐藏Marker
// 我这里的解决方法是设置地图底图的点击事件,来隐藏marker        mMapView.getChildAt(0).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mBaiduMap.hideInfoWindow();            }        });

结束

转载地址:http://hagpa.baihongyu.com/

你可能感兴趣的文章
linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
查看>>
PHP+Swoole及时通讯
查看>>
centos安装图形
查看>>
SpringCloud(第 012 篇)电影微服务接入 Feign 进行客户端负载均衡,通过 FeignClient 调用远程 Http 微服务...
查看>>
mysql tomcat redis nginx 版本的查看方法
查看>>
php判断ajax请求
查看>>
C语言中函数strcpy ,strncpy ,strlcpy的用法
查看>>
RedHat Linux卸载rpm包遇到error: specifies multiple packages
查看>>
centos6.4 http dhcp nfs pxe kickstart 自动化安装系统
查看>>
漫游配置文件
查看>>
数据的存储介质-固态存储SSD
查看>>
oracle PL/SQL 流程控制
查看>>
Linux下/proc目录简介
查看>>
jenkins自动同步配置文件
查看>>
Windows系统清理 只需做到五大方面
查看>>
我的友情链接
查看>>
sql server 2005 (select查询语句用法)
查看>>
Spring整合Hibernate(1)
查看>>
3月7日作业
查看>>
python学习笔记(五)
查看>>