百度地图在合适视野范围内显示所有的点_map 所选地点全部展示-程序员宅基地

技术标签: OnMapLoadedCallback  百度地图的使用  合适范围  百度地图  所有点  

通常地图会显示出多个点,如像行驶轨迹等,往往在屏幕上一次性就全部显示出来,那要怎么设置地图的显示宽高,才能将所有的点合理的显示出来呢。

看看以下的代码实现:

 private void setMyLocation() {
        list = new ArrayList<>();
        LatLng ll = new LatLng(24.475982,
                118.093132);
        LatLng ll1 = new LatLng(24.477382,
                118.093232);
        LatLng ll2 = new LatLng(24.478382,
                118.093832);
        LatLng ll3 = new LatLng(24.487382,
                118.094232);
        LatLng ll4 = new LatLng(24.497982,
                118.099562);

        list.add(ll);
        list.add(ll1);
        list.add(ll2);
        list.add(ll3);
        list.add(ll4);

        MapStatus.Builder builder = new MapStatus.Builder();
        builder.target(ll).zoom(18.0f);
//        mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
        for (LatLng latLng : list) {
            mBaiduMap.addOverlay(new BaiduMapUtil().setMarker(latLng));
        }

        mBaiduMap.addOverlay(new BaiduMapUtil().Polyline(list));

//将所有的坐标显示出来的合理视图
        if (isFrist) {
            mBaiduMap.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() {

                @Override
                public void onMapLoaded() {
                    isFrist=false;
                    mBaiduMap.animateMapStatus(new BaiduMapUtil().setLatLngBounds(list, mMapView));
                }
            });
        }else{
            mBaiduMap.animateMapStatus(new BaiduMapUtil().setLatLngBounds(list, mMapView));
        }

    }


以下为工具类BaiduMapUtil的具体实现

public class BaiduMapUtil {

    /**
     * 绘制Marker,地图上常见的类似气球形状的图层
     */
    public MarkerOptions setMarker(LatLng latLng) {
        return setMarker(latLng, R.drawable.icon_defult_marker);
    }


    public MarkerOptions setMarker(LatLng latLng, int drawableId) {
        MarkerOptions markerOptions = new MarkerOptions();//参数设置类
        markerOptions.position(latLng);//marker坐标位置
        markerOptions.icon(BitmapDescriptorFactory
                .fromResource(drawableId));//marker图标,可以自定义
        markerOptions.draggable(false);//是否可拖拽,默认不可拖拽
        markerOptions.anchor(0.5f, 1.0f);//设置 marker覆盖物与位置点的位置关系,默认(0.5f, 1.0f)水平居中,垂直下对齐
        markerOptions.alpha(0.8f);//marker图标透明度,0~1.0,默认为1.0
        markerOptions.animateType(MarkerOptions.MarkerAnimateType.none);//marker出现的方式,从天上掉下
        markerOptions.flat(false);//marker突变是否平贴地面
        markerOptions.zIndex(1);//index
        return markerOptions;
    }

    /**
     * 绘制折线
     */
    public PolylineOptions Polyline(List<LatLng> points) {
        PolylineOptions polylineOptions = new PolylineOptions();//参数设置类
        polylineOptions.width(10);//宽度,单位:像素
        polylineOptions.color(0xAAFF0000);//设置折线颜色
        polylineOptions.points(points);//折线顶点坐标集
        return polylineOptions;
    }

    /**
     * 多个点,在Android里面显示合理的缩放级
     */
    public MapStatusUpdate setLatLngBounds(List<LatLng> points, MapView mMapView) {
        LatLngBounds.Builder builder2 = new LatLngBounds.Builder();
        for (LatLng p : points) {
            builder2 = builder2.include(p);
        }
        LatLngBounds latlngBounds = builder2.build();
        MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(latlngBounds, mMapView.getWidth(), mMapView.getHeight());
        return u;
    }


}

//将所有的坐标显示出来的合理视图
        if (isFrist) {
            mBaiduMap.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() {

                @Override
                public void onMapLoaded() {
                    isFrist=false;
                    mBaiduMap.animateMapStatus(new BaiduMapUtil().setLatLngBounds(list, mMapView));
                }
            });
        }else{
            mBaiduMap.animateMapStatus(new BaiduMapUtil().setLatLngBounds(list, mMapView));
        }
这段代码为显示合理范围的核心代码,加入是否为首次的判断,因为要在 OnMapLoadedCallback中实现是关键,否则mapview的with和height取得是0,如果在其他视觉范围内,想恢复到这个合理的范围则经过首次加载后,就不会再执行OnMapLoadedCallback方法,所以要判断是否为第一次加载的状态。




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012693479/article/details/77666781

智能推荐

wxWidgets:常用表达式_wxwidget 正则表达式 非数字字符-程序员宅基地

文章浏览阅读282次。wxWidgets:常用表达式wxWidgets:常用表达式不同风味的正则表达式转义Escapes元语法匹配限制和兼容性基本正则表达式正则表达式字符名称wxWidgets:常用表达式一个正则表达式描述字符的字符串。这是一种匹配某些字符串但不匹配其他字符串的模式。不同风味的正则表达式POSIX 定义的正则表达式 (RE) 有两种形式:扩展正则表达式(ERE) 和基本正则表达式(BRE)。ERE 大致是传统egrep 的那些,而 BRE 大致是传统ed 的那些。这个实现增加了第三种风格:高级正则表达式_wxwidget 正则表达式 非数字字符

Java中普通for循环和增强for循环的对比_for循环10万数据需要时间-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏11次。Java中普通for循环和增强for循环的对比_for循环10万数据需要时间

学习PCB设计前的知识扫盲_pcb端子设计基础知识-程序员宅基地

文章浏览阅读2.7k次,点赞13次,收藏97次。0.工厂制作PCB线路板流程1.PCB的结构铜层阻焊丝印本质(PCB画电路板到底在画什么)基础工艺指标2.PCB图中的元素元素布局布线叠层设计3.PCB的设计依据原理图原理图元件库4.PCB的设计流程——总结_pcb端子设计基础知识

Python读取Excel内容;将读取的数据转换为list类型便于切片处理;列表的操作方法;pandas处理DataFrame类型数据;pandas操作;Python几种取整的方法_pandas excel list-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏19次。Python读取Excel内容;将读取的数据转换为list类型便于切片处理;列表的操作方法;pandas处理DataFrame类型数据_pandas excel list

nginx日志与监控,日志分析_nginx的日志分析-程序员宅基地

文章浏览阅读4.6k次。在分析服务器运行情况和业务数据时,nginx日志是非常可靠的数据来源,而掌握常用的nginx日志分析命令的应用技巧则有着事半功倍的作用,可以快速进行定位和统计。下面是自己在分析nginx日志时常用命令的一些总结。1.利用grep ,wc命令统计某个请求或字符串出现的次数比如我要统计GET /task/showContent接口在某天的调用次数,则可以使用如下命令: cat _nginx的日志分析

ECharts--中国地图(无敌详细)_echarts中国地图-程序员宅基地

文章浏览阅读5.4w次,点赞64次,收藏262次。使用Echarts绘制中国地图,其中地图点信息由JSON文件编写,前端html直接从JSON文件中读取地区数据,渲染到前端即可。详细介绍用到的各个功能!代码直接复制运行即可!_echarts中国地图

随便推点

JVM常用调优参数 ——JVM篇_jvm调优-程序员宅基地

文章浏览阅读1.9w次,点赞50次,收藏366次。JVM常用性能调优参数详解​ 在学习完整个JVM内容后,其实目标不仅是学习了解整个JVM的基础知识,而是为了进行JVM性能调优做准备,所以以下的内容就是来说说JVM性能调优的知识。一、性能调优​ 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等等。​ 架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。性能调优基本上按照以下步骤进行:明确优化目标发现性能瓶颈性能调优通过监控及数据统计工具获得数据确认是否达到目标二、何时进_jvm调优

三级嵌入式准备(二)_八个gpio引脚最多构成几个按键-程序员宅基地

文章浏览阅读435次,点赞3次,收藏7次。转载来源为https://blog.csdn.net/ReCclay/article/details/79439686 1、嵌入式系统的CPU主要使用的有DSP、ARM以及FPGA。2、DSP适用于数字信号处理的微处理器支持单指令多数据(DIMD)并行处理的指令显著提高音频、视频等数字信号的数据处理效率3、片上系统SOC已成为嵌入式处理器芯片的主流发展趋势它是..._八个gpio引脚最多构成几个按键

OpenStack的容器服务体验-程序员宅基地

文章浏览阅读70次。magnum 是用于 OpenStack 的容器服务。它有以下特点:抽象的容器、节点、服务等集成了用于容器技术的Kubernetes和Docker集成了多租户安全的 Keystone继承了k8s多租户网络安全的 Neutron环境准备在VMware Workstations建台虚拟机,Ubuntu 14.04 LTS,..._openstack 安装好没有容器服务

HDU - 2209 翻纸牌游戏(贪心)_hdu 2209-程序员宅基地

文章浏览阅读420次。 HDU - 2209 翻纸牌游戏 当前的这张牌是否翻转取决于它的前一张牌是否朝上,如果朝上,不翻转,朝下,则翻转,这是贪心的思想,但是,对于第一张牌来说,它的前面没有牌了,所以可以翻转,也可以不翻转,分两种情况来判断,参考的别人的代码 #include&lt;stdio.h&gt;#include&lt;algorithm&gt;#include&lt;string.h&gt;u..._hdu 2209

mysql异常代码c0000005_win7系统因0xc0000005错误导致应用程序无法正常启动的解决方法...-程序员宅基地

文章浏览阅读2k次。很多小伙伴都遇到过win7系统因0xc0000005错误导致应用程序无法正常启动的困惑吧,一些朋友看过网上零散的win7系统因0xc0000005错误导致应用程序无法正常启动的处理方法,并没有完完全全明白win7系统因0xc0000005错误导致应用程序无法正常启动是如何解决的,今天小编准备了简单的解决办法,只需要按照1、右键点击要运行的软件或游戏,在右键菜单中选择“兼容性疑难解答”; 2、让系..._mysql 0xc0000005

UNIX环境高级编程_标准io创建空头文件-程序员宅基地

文章浏览阅读492次。unix环境高级编程笔记_标准io创建空头文件