日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于百度LBS的定位

發布時間:2023/12/29 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于百度LBS的定位 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于百度LBS的定位

    • 注冊百度開發者賬號
    • 地圖
    • 定位

注冊百度開發者賬號

1.進入百度地圖開放平臺注冊

地圖

2.創建應用

3.獲取SHA1


創建成功


下載SDK


導入jar包


導入成功

配置AndroidManifest.xml文件

<application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="開發者 key" /> </application> <!-- 訪問網絡,進行地圖相關業務數據請求,包括地圖數據,路線規劃,POI檢索等 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 獲取網絡狀態,根據網絡狀態切換進行數據請求網絡轉換 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 讀取外置存儲。如果開發者使用了so動態加載功能并且把so文件放在了外置存儲區域,則需要申請該權限,否則不需要 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 寫外置存儲。如果開發者使用了離線地圖,并且數據寫在外置存儲區域,則需要申請該權限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在布局文件中添加地圖容器

<com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:clickable="true"android:layout_weight="1" />

地圖初始化

public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();//在使用SDK各組件之前初始化context信息,傳入ApplicationContext SDKInitializer.initialize(this);//自4.3.0起,百度地圖SDK所有接口均支持百度坐標和國測局坐標,用此方法設置您使用的坐標類型.//包括BD09LL和GCJ02兩種坐標,默認是BD09LL坐標。SDKInitializer.setCoordType(CoordType.BD09LL);} }

創建地圖Activity,管理MapView生命周期

public class BookmarkFragment extends Fragment {private MapView mMapView = null;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.bookmark_fragment,container,false);super.onCreate(savedInstanceState);//獲取地圖控件引用 mMapView = (MapView) view.findViewById(R.id.bmapView);return view;}@Overridepublic void onResume() {super.onResume();//在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理 mMapView.onResume();}@Overridepublic void onPause() {super.onPause();//在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理 mMapView.onPause();}@Overridepublic void onDestroy() {super.onDestroy();//在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命周期管理 mMapView.onDestroy();} }

效果圖:

定位

配置AndroidManifest.xml文件

<!-- 這個權限用于進行網絡定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 這個權限用于訪問GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <service android:name="com.baidu.location.f"android:enabled="true"android:process=":remote"/>

開啟地圖的定位圖層

BaiduMap mBaiduMap = null;mBaiduMap.setMyLocationEnabled(true); public class MyLocationListener extends BDAbstractLocationListener {private BaiduMap mBaiduMap;private MapView mMapView;public MyLocationListener(BaiduMap mBaiduMap,MapView mMapView){this.mBaiduMap=mBaiduMap;this.mMapView=mMapView;}@Overridepublic void onReceiveLocation(BDLocation location) {//mapView 銷毀后不在處理新接收的位置if (location == null || mMapView == null){return;}MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此處設置開發者獲取到的方向信息,順時針0-360.direction(location.getDirection()).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);} }

通過LocationClient發起定位

//定位初始化 mLocationClient = new LocationClient(view.getContext());//通過LocationClientOption設置LocationClient相關參數 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打開gps option.setCoorType("bd09ll"); // 設置坐標類型 option.setScanSpan(1000);//設置locationClientOption mLocationClient.setLocOption(option);//注冊LocationListener監聽器 MyLocationListener myLocationListener = new MyLocationListener(mBaiduMap,mMapView); mLocationClient.registerLocationListener(myLocationListener);//開啟地圖定位圖層 mLocationClient.start();

正確管理各部分的生命周期

@Override protected void onResume() {mMapView.onResume();super.onResume(); }@Override protected void onPause() {mMapView.onPause();super.onPause(); }@Override protected void onDestroy() {mLocationClient.stop();mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy(); }

效果圖:

參考鏈接:https://lbsyun.baidu.com/index.php?title=androidsdk

總結

以上是生活随笔為你收集整理的基于百度LBS的定位的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。