百度基礎地圖與定位

AndroidManifest.xml:

1.

<!-- 這個權限用於進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 這個權限用於訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用於訪問wifi網絡信息,wifi信息會用於進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 獲取運營商信息,用於支持提供運營商信息相關的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 這個權限用於獲取wifi的獲取權限,wifi信息會用來進行網絡定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用於讀取手機當前的狀態-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 寫入擴展存儲,向擴展卡寫入數據,用於寫入離線定位數據-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 訪問網絡,網絡定位需要上網-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡讀取權限,用戶寫入離線定位數據-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

2:

<service
    android:name="com.baidu.location.f"
    android:enabled="true"
    android:process=":remote">
</service>

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="8wfXa6BpqnKNwhYeBrIwZ3h5NRH4X2Ro" />
<!--value是百度申請的AK-->

build.gradle:


1:

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}


添加jar包與lib四個文件!!


public class MainActivity extends AppCompatActivity {

    private Button btnLocation;
    // 百度地圖控件
    private MapView mMapView = null;
    // 百度地圖對象
    private BaiduMap mBaiduMap;
    // 是否首次定位
    boolean isFirstLocation = true;
    // 定位相關
    LocationClient mLocationClient;
    private String path;
    public MyLocationListenner myListener = new MyLocationListenner();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各組件之前初始化context信息,傳入ApplicationContext
        //注意該方法要再setContentView方法之前實現
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);

        initView();
        setListener();

    }

    private void setListener() {
        btnLocation.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 開啓定位圖層
                mBaiduMap.setMyLocationEnabled(true);
                // 定位初始化
                mLocationClient = new LocationClient(MainActivity.this);
                mLocationClient.registerLocationListener(myListener);
                LocationClientOption option = new LocationClientOption();
                //設置獲得地址位置
                option.setIsNeedAddress(true);
                //設置獲得poi
                option.setIsNeedLocationPoiList(true);
                // 打開gps
                option.setOpenGps(true);
                // 設置座標類型
                option.setCoorType("bd09ll");
                option.setScanSpan(1000);
                mLocationClient.setLocOption(option);
                mLocationClient.start();
            }
        });
    }

    private void initView() {
        btnLocation = (Button) findViewById(R.id.btnLocation);
        //獲取地圖控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
        //普通地圖
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
        //設置熱力圖
        //mBaiduMap.setBaiduHeatMapEnabled(true);
        //設置交通圖
        mBaiduMap.setTrafficEnabled(true);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命週期管理
        mMapView.onDestroy();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //activity執行onResume時執行mMapView. onResume (),實現地圖生命週期管理
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //activity執行onPause時執行mMapView. onPause (),實現地圖生命週期管理
        mMapView.onPause();
    }

    /**
     * 定位SDK監聽函數
     */
    public class MyLocationListenner implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            String str = "定位的信息:"+location.getAddress().address+",緯度:"+location.getLatitude();
            //Toast.makeText(MainActivity.this,"緯度:"+location.getLatitude()+"經度"+location.getLongitude(),Toast.LENGTH_LONG).show();
            List list = location.getPoiList();
            str += "poi數量:"+list.size()+",第一個:"+((Poi)(list.get(0))).getName();
            path = location.getAddress().address;
            Log.e("=====", str);

            // map view 銷燬後不在處理新接收的位置
            if (location == null || mMapView == null) {
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此處設置開發者獲取到的方向信息,順時針0-360
                    .direction(5).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);
            if (isFirstLocation) {
                isFirstLocation = false;
                LatLng ll = new LatLng(location.getLatitude(),
                        location.getLongitude());
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll).zoom(18.0f);
                mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            }
        }

        @Override
        public void onConnectHotSpotMessage(String str, int i) {

        }

    }

}







<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.bwie.baidumap.MainActivity">

    <Button
        android:id="@+id/btnLocation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="定位"/>

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

</LinearLayout>


發佈了77 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章