百度地图

1.申请密钥

cd .android
keytool -list -v -keystore debug.keystore
复制开发版SHA1值 42:28:A5:A3:30:54:7D:71:FA:31:4D:58:4C:8C:5A:45:0F:94:89:89
keytool -list -v -keystore 发布版SHA1路径(需要打包生成)
输入密钥库口令: 生成APK的第一个密码2E:F8:95:77:E2:4B:CB:A2:26:8B:28:A8:86:EF:DE:B1:FD:67:A6:5A

---->XA5dNxGrhB006qGiM4TCNKDv39I8G1Wi

2.下载SDK

解压到libs目录下
依赖jar文件
在build.gradle的android闭包中添加
    sourceSets{
        main{
            jniLibs.srcDirs = ['libs']
        }
    }

3.搭建基础地图

    1.在application节点中中添加开发密钥
<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="第一步申请到的 key" />  
</application>
    2.添加所需权限
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
    3.第三步,在布局xml文件中添加地图控件;
<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:clickable="true" />
    4.在MyApp初始化SDK,并引用AppName
    public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SDKInitializer.initialize(this);
    }
}

    5.创建地图Activity,管理地图生命周期;与Activity同步
    public class Baidu extends AppCompatActivity {
    MapView mapView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mapView = (MapView) findViewById(R.id.mv);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mapView.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mapView.onResume();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }

}

4. 设置地图

    //地图控制类
    BaiduMap baiduMap = mapView.getMap();
    //空白地图
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);
    //普通地图
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);  
    //卫星地图
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);  
    //交通地图
    mBaiduMap.setTrafficEnabled(true);
    //热力图
    mBaiduMap.setBaiduHeatMapEnabled(true);



    //Marker坐标点
    public static final LatLng xykj = new LatLng(22.536294,113.95137);
    //Marker图标
    private static final BitmapDesceriptor xykjBitmap = BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher_round);
    //创建一组Marker图标
    ArrayList<BitmapDescriptor> list = new ArrayList<>();
            for (int i = 0; i < 10; i++) {
            try {
                int id = R.drawable.class.getField("icon_mark" + (char)('a'+i)).getInt(null);
                list.add(BitmapDescriptorFactory.fromResource(id));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    //添加Marker标记
    OverlayOptions option = new MarkerOptions().position(xykj)
        .icon(xykjBitmap);  //一张图片
        .icons(list);   //一组图片
        .animateType(MarkerOptions.MarkerAnimateType.drop);//从天而降
     baiduMap.addOverlay(option);
    //添加文本标记
    OverlayOptions overlayOptions = new TextOptions().position(xykj).text("武汉大学")
            .fontSize(18).bgColor(Color.BLUE)
            .fontColor(Color.RED);
        Text text = (Text) baiduMap.addOverlay(overlayOptions);
    //添加一个圆到地图
    OverlayOptions overlayOptions1 = new CircleOptions().center(latLng).fillColor(Color.argb(0x60, 0xff, 0x00, 0xff))
         .radius(2000)
         .stroke(new Stroke(Color.GRAY, 10));
     baiduMap.addOverlay(overlayOptions1);
    //添加一个折线
        List<Integer> colorList = new ArrayList<>();
        List<LatLng> lineList = new LinkedList<>();
        lineList.add(new LatLng(22, 113));
        lineList.add(new LatLng(22.536294, 113.95137));
        lineList.add(new LatLng(23, 114));
        colorList.add(Color.RED);
        colorList.add(Color.GREEN);
        PolylineOptions points = new PolylineOptions().colorsValues(colorList).points(lineList);
        baiduMap.addOverlay(points);




     //设置百度地图的当前位置
     baiduMap.setMapStatus(MapStatusUpdateFactory.newLatLngZoom(xykj,18));



     //mipmap和drawable不区分图片大小

     // MapFragment 和 MapView 的区别

5.POI检索

        1. 创建POI检索实例
            PoiSearch poiSearch = PoiSearch.newInstance();

            2. 设置POI检索监听,监听请求后的结果
            OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() {
            @Override
            public void onGetPoiResult(PoiResult poiResult) {
                //获取POI检索结果
                List<PoiInfo> allPoi = poiResult.getAllPoi();
            }

            @Override
            public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
                //获取Place详情页检索结果
                    if (result.error != SearchResult.ERRORNO.NO_ERROR) {
                    //详情检索失败
                    // result.error请参考SearchResult.ERRORNO 
                } 
                else {
                    //检索成功
                }
            }
            @Override
            public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

            }
        };
        poiSearch.setOnGetPoiSearchResultListener(poiListener);



            3. 发送POI请求
            // 1. 区域
        poiSearch.searchInBound(new PoiBoundSearchOption()
                .bound(new LatLngBounds.Builder().include(xykj).include(zhongshan).build())
                .keyword("超市"));
            // 2. 周边
        poiSearch.searchNearby(new PoiNearbySearchOption()
                .location(zhongshan)
                .keyword("公园")
                .radius(20000)
                .pageNum(2));
            // 3. 城市
        poiSearch.searchInCity(new PoiCitySearchOption()
                .city("纽约")
                .keyword("超市"));
            // 4. 发送POI详情检索请求
        poiSearch.searchPoiDetail(new PoiDetailSearchOption().poiUid(poiInfo.uid));



        // 4. 释放POI检索实例
        poiSearch.destroy();

6.路线规划

            1. 初始化路线规划实例
            RoutePlanSearch routePlanSearch = RoutePlanSearch.newInstance();

            2. 设置规划请求后的监听,共有6个方案
            routePlanSearch.setOnGetRoutePlanResultListener(this);
            // 驾车、步行、公交、骑行、跨城综合、室内路线搜索

            3. 发出规划请求
                //跨城
                    mSearch.masstransitSearch(new MassTransitRoutePlanOption()
                    .from(PlanNode.withCityNameAndPlaceName("北京", "天安门"))
                    .to(PlanNode.withCityNameAndPlaceName("上海", "东方明珠")));
                //驾车
                    mSearch.drivingSearch((new DrivingRoutePlanOption())
                    .from(stNode).to(enNode));
                //公交
                    mSearch.transitSearch((new TransitRoutePlanOption())
                    .from(stNode).city("北京").to(enNode));
                //步行        
                    mSearch.walkingSearch((new WalkingRoutePlanOption())
                    .from(stNode).to(enNode));
                //骑行
                    mSearch.bikingSearch((new BikingRoutePlanOption())
                    .from(stNode).to(enNode));
            4. 销毁
                mSearch.destroy();

7.定位

        1. 使用SourceSets
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值