百度地图在scrollview里面滑动冲突解决以及跳转到百度地图app的方法

首先用百度开发者账号申请一个百度地图的key。然后将百度地图demo中的.jar和.so导包到自己项目中的libs目录下,在AndroidManifest文件中配置

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="你的key" />
在布局文件中加入
<RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <com.baidu.mapapi.map.MapView
                    android:id="@+id/bmapView"
                    android:layout_width="match_parent"
                    android:layout_height="400dp"
                    android:clickable="true" />

                <ImageView
                    android:id="@+id/iv_dh"
                    android:layout_marginTop="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_alignParentRight="true"
                    android:src="@mipmap/djdh"
                    android:layout_width="60dp"
                    android:layout_height="wrap_content" />
            </RelativeLayout>
这是其中的一部分布局代码,外层RelativeLayout是在ScrollView里面。按钮是用来从自己App跳到百度地图app的。

先看下效果图

点击“点击导航"会跳转到百度地图app导航界面

首先解决百度地图在scrollview里面滑动不流畅的问题。提到滑动冲突,百分百的解决方案就是事件分发。代码如下

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ScreenUtils.getScreenWidth(this), ScreenUtils.getScreenWidth(this));
        mMapView.setLayoutParams(lp);
        LatLng southwest = new LatLng(Double.parseDouble(mData.getLat()), Double.parseDouble(mData.getLng()));
        //构建文字Option对象,用于在地图上添加文字
        OverlayOptions textOption = new TextOptions()
                .bgColor(0xFFFFFFFF)
                .fontSize(50)
                .fontColor(0xFF000000)
                .text(mData.getStudio_name())
                .rotate(0)
                .position(southwest);
        //在地图上添加该文字对象并显示
        mBaiduMap.addOverlay(textOption);
        MapStatus mMapStatus = new MapStatus.Builder()
                .target(southwest)
                .zoom(15)
                .build();
        MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
        //改变地图状态
        mBaiduMap.setMapStatus(mMapStatusUpdate);
        BitmapDescriptor bitmap = BitmapDescriptorFactory
                .fromResource(R.mipmap.icon_marka);
        //构建MarkerOption,用于在地图上添加Marker
        OverlayOptions option = new MarkerOptions()
                .position(southwest)
                .icon(bitmap);
        //在地图上添加Marker,并显示
        mBaiduMap.addOverlay(option);
        /**
         * 解决滑动冲突
         */
        View v = mMapView.getChildAt(0);
        v.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    scrollView.requestDisallowInterceptTouchEvent(false);
                } else {
                    scrollView.requestDisallowInterceptTouchEvent(true);
                }
                return false;
            }
        });
滑动那块就是说当手指起来时,scrollview才能获得事件处理权限。按下去或者移动的时候,scrollview都放弃处理action。至于前面的在地图上写字,画图。百度开放平台api上都写的很清楚。然后就是点击立即导航跳转到百度地图app。点击事件代码如下

Intent intent = new Intent();
String str = "baidumap://map/marker?location="+mData.getLat()+","+mData.getLng()+"&title="+mData.getStudio_name()+"&traffic=on";
intent.setData(Uri.parse(str));
if (AppTools.isInstallByread("com.baidu.BaiduMap")) {
         startActivity(intent); //启动调用
    } else {
           Toast.makeText(HsDetailActivity.this, "没有安装百度地图客户端", Toast.LENGTH_SHORT).show();
    }
str的写法以及不同写法的功能参考这个网址。我这边调用的是导航功能。这个网址真的很难找,找了半天才找到。

http://developer.baidu.com/map/wiki/index.php?title=uri/api/android#.E7.A7.BB.E5.8A.A8.E5.BA.94.E7.94.A8.E8.B0.83.E7.94.A8.E7.99.BE.E5.BA.A6.E5.9C.B0.E5.9B.BE

里面有ios、android、h5等各个平台的调用说明。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值