Android studio 百度地图开发(7)overlayManager、overlayutil应用

Android studio 百度地图开发(7)overlayManager、overlayutil应用


开发环境:win7 64位,Android Studio,请注意是Android Studio;

+导航SDK版本:3.1.0+地图SDK版本:3.7.3+定位SDK版本:6.2.3


百度地图开发系列文章:

一.问题引入

        该部分内容还是属于导航部分的应用,例如《Android studio 百度地图开发(3)地图导航》。只是应用(3)里使用的是百度官方导航Demo:有起点和终点后,直接进入导航模式,而不会先展示规划路径,然后点击导航才正式进入导航模式。可能有时候我们也有这样的需求:在地图上选择起点和终点后,需要给出几种规划方案供我们选择,比如:躲避拥堵、时间最少、少换乘等等;另外一点,我们可能需要在地图上展示出这些规划方案,也就是在地图上添加路径图层,此时就需要用到overlay以及其子类DrivingRouteOverlay等等。

        But,问题就随之而来。为了实现这个需求,ask度娘,就会查到很多现成的导航例子,但是这些例子所使用的SDK版本都比较旧了,使用较新的SDK+别人的代码或者是官方Demo,都会出现问题,那就是找不到PoiOverlayTransitRouteOverlayWalkingRouteOverlayBusLineOverlayDrivingRouteOverlay等等,为什么呢?因为从SDK3.6.0以后,这些类代码已经放在了源码包:com.baidu.mapapi.overlayutil中,而overlayutil源码包并没有在3.6.0之后的SDK中


二.解决方法

        既然问题是这样的,那就只能自己将官方的overlayutil整合到自己的工程里了。为了减少需要改动的地方,我们需要在自己的工程里再新建一个包,用来放置官方的overlayutil相关代码,步骤如下。

1)先下载官方的overlayutil和clusterutil

     下载地址1:点击下载【推荐,附带使用说明的文档】

     下载地址2:点击下载【下载示例代码】

2)使用方法

①如果是使用下载地址1:解压后按照方法.txt即可

②如果是下载方法2:

解压后,源码路径为:BaiduMap_AndroidMapSDK_v3.7.1_Sample\BaiduMapsApiDemo\src\com\baidu\mapapi

然后:1)方式一:在工程的../java目录下新建com->baidu->mapapi,然后将clusterutil和overlayutil复制进去就可以;
            2)方式二:直接将src/下的整个com文件复试到工程的java目录下。


最终的样子:


然后就可以正常使用规划路径图层了,关于图层的添加方法和类设计《点击查看,一定要看》:

  route = result.getRouteLines().get(0);

            DrivingRouteOverlay overlay = new DrivingRouteOverlay(mBaidumap);
            //routeOverlay = overlay;
            mBaidumap.setOnMarkerClickListener(overlay);
            overlay.setData(result.getRouteLines().get(0));
            overlay.addToMap();
            overlay.zoomToSpan();



2016年12月19日补充:

关于“IconGenerator类引用的text_bubble不存在”的问题,我已经很久没做这块了,所以不确定是否一定需要。如果有需要的朋友,解决方法:

layout文件夹下新建一个text_bubble.xml,添加代码:

<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2015 Baidu, Inc. All Rights Reserved.
  -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <com.baidu.mapapi.clusterutil.ui.RotationLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:paddingBottom="5dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="5dp"/>

    </com.baidu.mapapi.clusterutil.ui.RotationLayout>

</LinearLayout>


  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值