zoukankan      html  css  js  c++  java
  • Android 百度地图

    一、基本概念:
    (一)、百度地图:
    百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据, 构建功能丰富、交互性强的地图类应用程序。
     
    百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制。您需申请密钥(key)后, 才可使用百度地图Android SDK。
     
     
    (二)、LBS:(Location based Service)基于位置的服务
     
    基于位置的服务,它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在地理信息系统(外语缩写:GIS、外语全称:Geographic Information System)平台的支持下,为用户提供相应服务的一种增值业务。
     
     
     
    二、百度地图使用步骤:【参照(http://developer.baidu.com/map/sdk-android.htm)】
     
    (一)、HelloBaiduMap:
     
    1、第一步:申请百度地图密钥(API_KEY):
    http://developer.baidu.com/map/sdk-android.htm
     
     
    2、第二步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libsarmeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示; 

    android_dev1.png

     
    注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
     
     
    3、第三步:在AndroidManifest中添加开发密钥、所需权限等信息; 

    <application

            <meta-data  

            android:name="com.baidu.lbsapi.API_KEY"  

            android:value="P3G69b5s87YG5M31f8A7oyLW"/>

        </application>

    <uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/>  

    <uses-permissionandroid:name="android.permission.USE_CREDENTIALS"/>  

    <uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/>  

    <uses-permissionandroid:name="android.permission.AUTHENTICATE_ACCOUNTS"/>  

    <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>  

    <uses-permissionandroid:name="android.permission.INTERNET"/>  

    <uses-permissionandroid:name="com.android.launcher.permission.READ_SETTINGS"/>  

    <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>  

    <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>  

    <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>  

    <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

    <uses-permissionandroid:name="android.permission.BROADCAST_STICKY"/>  

    <uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/>  

    <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>

     
     
    4、第四步:在布局文件中添加地图控件:

        <com.baidu.mapapi.map.MapView  

        android:id="@+id/mapView"  

        android:layout_width="match_parent"  

        android:layout_height="match_parent"  

        android:clickable="true"/>

     
     
    5、第五步:在应用程序创建时初始化 SDK引用的Context 全局变量: 

    protectedvoid onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    // 在使用SDK各组件之前初始化context信息,传入ApplicationContext

    // 注意该方法要再setContentView方法之前实现

    SDKInitializer.initialize(getApplicationContext());

    // 装载布局文件

    setContentView(R.layout.activity_main);

    }

     
     
    6、第六步:创建地图Activity,管理地图生命周期:

    publicclass MainActivity extends Activity {

    private MapView mapView;

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    // 在使用SDK各组件之前初始化context信息,传入ApplicationContext

    // 注意该方法要再setContentView方法之前实现

    SDKInitializer.initialize(getApplicationContext());

    // 装载布局文件

    setContentView(R.layout.activity_main);

    mapView = (MapView) findViewById(R.id.mapView);

    }

    @Override

    protectedvoid onResume() {

    super.onResume();

    mapView.onResume();

    }

    @Override

    protectedvoid onPause() {

    super.onPause();

    mapView.onPause();

    }

    @Override

    protectedvoid onDestroy() {

    super.onDestroy();

    mapView.onDestroy();

    }

    }

     
     
    (二)、基础地图:
    1、实现基础地图的操作步骤:
    1. 布局文件中使用MapView;
    2. 初始化SDK,并检查Key的合法性;
      1. SDKInitializer.initialize(getApplicationContext()); 
      2. checkKEY();
    3. 初始化BaiduMap对象;
      1. MapView进行findViewById();
      2. MapView对象调用getMap(),返回BaiduMap;
    4. 设置BaiduMap;
      1. setMapType();
      2. setTrafficEnabled();
     
     
    (三)、POI搜索:
    1、实现POI搜索的操作步骤:
    1. 布局文件中使用fragment,用来实现对BaiduMap的加载;
      1. class="com.baidu.mapapi.map.SupportMapFragment"
    2. 当前Activity继承于FragementActivity
    3. 初始化SDK,并检查Key的合法性;
      1. SDKInitializer.initialize(getApplicationContext())
      2. checkKEY();
      3. 备注:该两句话必须放在setContentView()之前。
    4. 初始化BaiduMap对象;
      1. baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
    5. 初始化PoiSearch对象;
      1. PoiSearch.newInstance();
    6. PoiSearch对象设置监听器
      1. setOnGetPoiSearchResultListener(),重写onGetPoiResult()方法;
    7. 自定义PoiOverlay类,实现对每个标记的单击监听;
      1. 通过onPoiClick()方法,获取每个PoiInfo中的信息。如果这个对象中包含有明细,可以打开一个新页面来展示兴趣点的详细介绍。
    8. 在AndroidManifest.xml文件中配置PlaceCaterActivity页面;
      1. 该页面是Baidu提供的POI的明细介绍页面。
    9. PoiSearch对象调用searchInBound()、searchInCity() 、 searchNearby()方法实现兴趣点查询。
     
    【总结:】核心步骤:
    • 实例化BaiduMap,PoiSearch对象;
    • PoiSearch对象设置OnGetPoiSearchResultListener()监听;
    • PoiSearch对象调用searchInCity()方法触发监听。
     
     
    (四)、线路规划:
    1、实现路线规划的操作步骤:
    1. 布局文件中使用MapView,用来实现对BaiduMap的加载;
    2. 初始化SDK,并检查Key的合法性;
      1. SDKInitializer.initialize(getApplicationContext()); 
      2. checkKEY();
    3. 初始化MapView;
      1. 调用findViewById()
    4. 初始化BaiduMap对象;
      1. baiduMap = MapView对象.getMap();
    5. 初始化RoutePlanSearch对象;
      1. RoutePlanSearch.newInstance();
    6. RoutePlanSearch对象设置监听器;
      1. setOnGetRoutePlanResultListener(),重写onGetWalkingRouteResult()、onGetTransitRouteResult()、onGetDrivingRouteResult()方法;
    7. 自定义三种RouteOverlay类(WalkingRouteOverlay、TransitRouteOverlay、DrivingRouteOvelray);[可选]
    8. 调用RoutePlanSearch对象的三种方法(drivingSearch()、transitSearch()、walkingSearch())实现路线规划。
     
    【总结:】核心步骤:
    • 实例化BaiduMap,RoutePlanSearch对象;
    • RoutePlanSearch对象设置OnGetRoutePlanResultListener监听;
    • RoutePlanSearch对象调用drivingSearch()、transitSearch()、walkingSearch()方法触发监听。
     
    (五)、公交查询:
    1、实现公交查询的操作步骤:
    1. 布局文件中使用fragment,用来实现对BaiduMap的加载;
      1. class="com.baidu.mapapi.map.SupportMapFragment"
    2. 初始化SDK,并检查Key的合法性;
      1. SDKInitializer.initialize(getApplicationContext()); 
      2. checkKEY();
    3. 当前Activity继承于FragementActivity
    4. 初始化BaiduMap对象;
      1. baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
    5. 初始化PoiSearch对象/初始化BusLineSearch对象;
      1. PoiSearch.newInstance();
      2. BusLineSearch.newInstance();
    6. BusLineSearch对象设置监听器;
      1. setOnGetBusLineSearchResultListener(),重写onGetBusLineResult()方法;
    7. 给PoiSearch对象设置监听器;
      1. setOnGetPoiSearchResultListener(),重写onGetPoiResult()方法;
      2. 在这个监听器中调用BusLineSearch对象的searchBusLine()方法;
    8. 给按钮增加单击监听事件,实现PoiSearch对象的searchInBound()、searchInCity() 、 searchNearby()方法实现兴趣点查询。
    【总结:】核心步骤:
    • 实例化BaiduMap、PoiSearch对象及BusLineSearch对象;
    • PoiSearch对象设置OnGetPoiSearchResultListener()监听;BusLineSearch对象设置OnGetBusLineSearchResultListener监听;
    • 在PoiSearch对象的监听回调方法onGetPoiResult()中调用busLineSearch对象的searchBusLine()方法;
    • PoiSearch对象调用searchInCity()方法触发整个监听。

    【备注:】
            整体思路:先调用POI查询,在POI查询中的监听器中执行BusLine查询
  • 相关阅读:
    Java实现 LeetCode 27 移除元素
    Java实现 LeetCode 26 删除排序数组中的重复项
    Java实现 LeetCode 26 删除排序数组中的重复项
    Java实现 LeetCode 26 删除排序数组中的重复项
    Java实现 LeetCode 25 K个一组翻转链表
    Java实现 LeetCode 25 K个一组翻转链表
    Java实现 LeetCode 25 K个一组翻转链表
    Java实现 LeetCode 24 两两交换链表中的节点
    Java实现 LeetCode 24 两两交换链表中的节点
    Java实现 LeetCode 24 两两交换链表中的节点
  • 原文地址:https://www.cnblogs.com/smxooo/p/androidBaiduDitu.html
Copyright © 2011-2022 走看看