百度地图详解使用,显示自己的当前位置BaiduMap
生活随笔
收集整理的這篇文章主要介紹了
百度地图详解使用,显示自己的当前位置BaiduMap
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
第一步:注冊百度開發(fā)者賬號 http://lbsyun.baidu.com/,下載對應(yīng)的jar和Key
第二步:創(chuàng)建應(yīng)用
填寫正確的SHA1和應(yīng)用的包名,并且下載
第三步:解壓上面的SDK_Lib壓縮包文件
libs下放入jar包,并且添加到依賴
main下面新建文件夾JNIlibs放入這些文件
第四步:AndroidManifest.xml文件配置
加入所需要的權(quán)限
<!-- 訪問網(wǎng)絡(luò),進行地圖相關(guān)業(yè)務(wù)數(shù)據(jù)請求,包括地圖數(shù)據(jù),路線規(guī)劃,POI檢索等 --><uses-permission android:name="android.permission.INTERNET" /><!-- 獲取網(wǎng)絡(luò)狀態(tài),根據(jù)網(wǎng)絡(luò)狀態(tài)切換進行數(shù)據(jù)請求網(wǎng)絡(luò)轉(zhuǎn)換 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 讀取外置存儲。如果開發(fā)者使用了so動態(tài)加載功能并且把so文件放在了外置存儲區(qū)域,則需要申請該權(quán)限,否則不需要 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- 寫外置存儲。如果開發(fā)者使用了離線地圖,并且數(shù)據(jù)寫在外置存儲區(qū)域,則需要申請該權(quán)限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 這個權(quán)限用于進行網(wǎng)絡(luò)定位 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 這個權(quán)限用于訪問GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />application中添加
<meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="value"></meta-data>value 是創(chuàng)建應(yīng)用的
布局文件
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="true" /></android.support.constraint.ConstraintLayout>MainActivity
package com.yuan.testbaidumap;import android.Manifest; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log;import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationConfiguration; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.model.LatLng;public class MainActivity extends AppCompatActivity {private MapView mMapView;private BaiduMap mBaiduMap;private boolean isFirstLoc = true;private MyLocationConfiguration.LocationMode locationMode; //當前定位模式@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mMapView = findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {return;}locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,1,new LocationListener() {@Overridepublic void onLocationChanged(Location location) {locationUpdates(location);}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(String provider) {}@Overridepublic void onProviderDisabled(String provider) {}});Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);locationUpdates(location);}private void locationUpdates(Location location) {if (location != null) {LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());Log.i("Location", "緯度:" + location.getLatitude() + "經(jīng)度:" + location.getLongitude());if (isFirstLoc) {MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u); // 設(shè)置地圖位置isFirstLoc = false;}// 構(gòu)造定位數(shù)據(jù)MyLocationData locationData = new MyLocationData.Builder().accuracy(location.getAccuracy()).direction(100) // 設(shè)置方向信息.latitude(location.getLatitude()) // 設(shè)置維度坐標.longitude(location.getLongitude()) // 經(jīng)度.build();mBaiduMap.setMyLocationData(locationData); //設(shè)置定位數(shù)據(jù)BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);locationMode = MyLocationConfiguration.LocationMode.NORMAL; // 設(shè)置定位模式MyLocationConfiguration configuration = new MyLocationConfiguration(locationMode, true, bitmapDescriptor);mBaiduMap.setMyLocationConfiguration(configuration); // 顯示定位圖標} else {Log.i("Location","沒有獲取到GPS信息");}}@Overrideprotected void onStart() {super.onStart();mBaiduMap.setMyLocationEnabled(true); // 開啟定位圖層}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onStop() {super.onStop();mBaiduMap.setMyLocationEnabled(false); // 停止圖層}@Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy();mMapView = null;} }測試如果沒有數(shù)據(jù),請到室外或者空曠的地方。
總結(jié)
以上是生活随笔為你收集整理的百度地图详解使用,显示自己的当前位置BaiduMap的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 抽扑克牌游戏
- 下一篇: vep加密视频破解转换翻录为mp4教程