百度地图的集成过程

1.背景

在项目中我们需要集成百度地图的时候,虽然不难,但一路走下来也未必一帆风顺,在这里我只记录集成的细节问题,详细请看官方文档,例子就举个道路查询的例子,更多例子,请查看百度地图官方demo或者本人的简单小demo.

2.开发准备

2.1在百度开发者平台上创建应用,获取appKey。这里需要一个SHA1值(开发版和发布版),
具体获取请参考:http://blog.csdn.net/donkor_/article/details/53487133

获取百度地图的key

2.2 下载百度api,注意最好不要下载最新版本,在这里我下载的是v3.5的稳定版,将jar拷贝到libs目录下,在main目录下创建jniLibs文件夹,将so文件对应copy,如图:

集成jar和so文件

3.开发之路

demo地址:
3.1 添加需要的权限,并在在AndroidManifest的application节点下添加如下:

   <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="appKey的位置" />

3.2 将校验appKey的代码,至少放在地图页面的呃前一个页面,注意:context须是getApplicationContext()

SDKInitializer.initialize(getApplicationContext());

3.3 百度地图的地图控件是MapView,只要运用这个控件,就可以展示地图了

 <com.baidu.mapapi.map.MapView
        android:id="@+id/mapview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

3.4 接下来简单说下驾车路线查询,其他的类似
3.4.1 通过mMapView拿到mBaiduMap,mBaiduMap是地图的操作类,是关键api,

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.driving);
        ButterKnife.bind(this);
        mBaiduMap= mMapView.getMap();
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(new LatLng(39.106391, 116.3743)));
    }

3.4.2 通过routePlanSearch进行驾车搜索,利用drivingRoutePlanOption设置起始点及途经点,搜索结果在routePlanSearch.setOnGetRoutePlanResultListener()监听中获取并展示

        RoutePlanSearch routePlanSearch = RoutePlanSearch.newInstance();
        //设置搜索结果的监听
        routePlanSearch.setOnGetRoutePlanResultListener(new OnDrivingListener());

        // 驾车搜索
        DrivingRoutePlanOption option = new DrivingRoutePlanOption();
        option.policy(DrivingRoutePlanOption.DrivingPolicy.ECAR_FEE_FIRST);
        //设置起点
        PlanNode _from= PlanNode.withLocation(latLng);
        option.from(_from);
        //设置终点
        PlanNode _to = PlanNode.withCityNameAndPlaceName("北京","故宫");
        option.to(_to);
        //设置途经点
        List<PlanNode> list = new ArrayList<>();
        list.add(PlanNode.withLocation(new LatLng(39.917661,116.215064)));
        option.passBy(list);
        routePlanSearch.drivingSearch(option);

3.4.3 在搜索结果的回调中处理

 class OnDrivingListener implements OnGetRoutePlanResultListener {

        @Override
        public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {

        }

        @Override
        public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {

        }

        @Override
        public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {

            if(drivingRouteResult==null||drivingRouteResult.error.equals(SearchResult.ERRORNO.RESULT_NOT_FOUND)){
                Toast.makeText(DrivingSearchDemo.this, "没有数据", Toast.LENGTH_SHORT).show();
                return;
            }
            DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(baiduMap);
            // 给覆盖物传递事件
            baiduMap.setOnMarkerClickListener(drivingRouteOverlay);
            drivingRouteOverlay.setData(drivingRouteResult.getRouteLines().get(0));
            drivingRouteOverlay.addToMap();
            drivingRouteOverlay.zoomToSpan();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值