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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

高德地图使用——定位功能

發布時間:2023/12/14 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高德地图使用——定位功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一次中我們說到了如何申請key值,和在Application中如何配置,以及將地圖顯示出來。如果沒看過的朋友們可以看一下筆者上一篇文章:最新高德地圖使用(SDK6.3.0版本)——申請key、顯示地圖。在這一篇中,我們將了解如何實現高德地圖定位功能。

相比于上一篇來說,我感覺這一篇的內容應該不會那么多,因為實現定位的功能實在是太簡單了,只是涉及到幾個類而已。在看代碼之前,我們先看一下實現定位需要涉及到的幾個類吧:

AMapLocationClient類

這個類是定位服務類,我們通過這個類實現定位。AMapLocationClient類主要涉及到的工作有:

  • 啟動、停止定位
  • 設置、移除監聽器
  • 設置定位參數(AMapLocationClientOption類,之后會詳細介紹這個類)

1.構造方法

public AMapLocationClient(Context var1)

AMapLocationClient類的構造方法傳入一個上下文參數,我們最好通過getApplicationContext方法獲取全局Context,或者自定義Application中添加全局Context來獲取。

2.常用方法

限定符

返回值

方法名

解釋

public

void

setLocationOptionAMapLocationClientOption option

設置定位參數

public

void

setLocationListenerAMapLocationListener listener

設置定位回調監聽

public

void

unRegisterListenerAMapLocationListener listener

移除定位監聽

public

void

startLocation()

開始定位

public

void

stopLocation()

停止定位

public

AMapLocation

getLastKnownLocation()

獲取最后一次定位的位置信息

public

void

enableBackgroundLocationint NotificationIdNotification notification

開啟后臺定位功能

開啟后會顯示一個通知欄

public

void

disableBackgroundLocationboolean removeNotification

關閉后臺定位功能

主要的方法就是上述的幾個,其實感覺也沒什么好說的了,因為上面表格中已經說的很清楚了。

AMapLocationClientOption類

AMapLocationClientOption類用來進行定位方式的配置。主要工作有:

  • 定位間隔設置
  • 定位模式等設置
  • 是否返回相關屬性

1.構造方法

他的構造方法沒什么好說的,默認構造方法。

2.嵌套類

AMapLocationClientOption類內部有三個枚舉類型。分別是AMapLocationMode、AMapLocationProtocol、AMapLocationPurpose、GeoLanguage。來一起看一下吧:

AMapLocationMode:
public static enum AMapLocationMode {Battery_Saving,Device_Sensors,Hight_Accuracy;private AMapLocationMode() {} }

Battery_Saving

高精度定位模式:在這種定位模式下,將同時使用高德網絡定位和GPS定位,優先返回精度高的定位

Device_Sensors

僅設備定位模式:在這種模式下,將只使用GPS定位。

Hight_Accuracy

高精度定位模式:在這種定位模式下,將同時使用高德網絡定位和GPS定位,優先返回精度高的定位


AMapLocationProtocol:
public static enum AMapLocationProtocol {HTTP(0),HTTPS(1);private int a;private AMapLocationProtocol(int var3) {this.a = var3;}public final int getValue() {return this.a;} }

HTTP:在這種定位協議下,會使用http請求定位

HTTPS:在這種定位協議下,會使用https請求定位


AMapLocationPurpose:
public static enum AMapLocationPurpose {SignIn,Transport,Sport;private AMapLocationPurpose() {} }

Signin:簽到場景 只進行一次定位返回最接近真實位置的定位結果(定位速度可能會延遲1-3s)

Sport:運動場景 高精度連續定位,適用于有戶內外切換的場景,GPS和網絡定位相互切換,GPS定位成功之后網絡定位不再返回,GPS斷開之后一段時間才會返回網絡結果

Transport:出行場景 高精度連續定位,適用于有戶內外切換的場景,GPS和網絡定位相互切換,GPS定位成功之后網絡定位不再返回,GPS斷開之后一段時間才會返回網絡結果


GeoLanguage:不是很重要,我們不說了-。+!


3.常用方法

限定符

返回值

方法名

解釋

public

AMapLocationClientOption

setIntervallong interval

發起定位時間間隔

public

AMapLocationClientOption

setLocationCacheEnableboolean

是否使用緩存策略

默認true(如果為true,在多次定位是會使用緩存值,如果想連續獲取位置就設為false

public

AMapLocationClientOption

setLocationModeAMapLocationMode

設置定位模式

public

AMapLocationClientOption

setLocationProtocolAMapLocationProtocol

設置網絡協議

public

AMapLocationClientOption

setLocationPurposeAMapLocationPurpose

設置定位場景

public

AMapLocationClientOption

setNeedAddressboolean

設置設置返回地址信息

默認true

public

AMapLocationClientOption

setOnceLocationboolean

設置單次定位

默認false

public

AMapLocationClientOption

setOnceLocationLastestboolean

設置是否等待WIFI列表刷新

定位精度更高,但速度更慢

public

AMapLocationClientOption

setSensorEnableboolean

是否使用傳感器

默認false

public

AMapLocationClientOption

setWifiScanboolean

是否允許WIFI刷新

默認true


AMapLocation類

AMapLocation類用于保存定位完成之后的位置信息(經緯度,地址等等。。。)

關于他的方法就不列舉了,全都是setset。。。。。只要知道英文應該都能看懂的哈哈!


AMapLocationListener接口

這個就很明確了,只是一個回調接口,在定位位置改變時候進行回調的。他只有一個抽象方法:

public interface AMapLocationListener {void onLocationChanged(AMapLocation var1); }


接下來給大家帶來一個例子:

Demo

public void startLocate() {AMapLocationClient mLocationClient = null;AMapLocationListener mLocationListener = this;mLocationClient = new AMapLocationClient(MyApplication.getSingleContext());mLocationClient.setLocationListener(mLocationListener);AMapLocationClientOption mLocationClientOption = new AMapLocationClientOption();mLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);mLocationClientOption.setOnceLocation(false);mLocationClientOption.setOnceLocationLatest(true);mLocationClientOption.setInterval(3000);mLocationClientOption.setSensorEnable(true);mLocationClientOption.setLocationCacheEnable(false);//生成本地緩存,不區分單次定位還是多次定位,默認true,如果想要連續獲取位置就設置成false。if (null != mLocationClient) {mLocationClient.setLocationOption(mLocationClientOption);//設置場景模式后最好調用一次stop,再調用start以保證場景模式生效mLocationClient.stopLocation();mLocationClient.startLocation();NotificationCompat.Builder builder = new NotificationCompat.Builder(MyApplication.getSingleContext(),"1");builder.setContentText("asd").setContentTitle("你好");mLocationClient.enableBackgroundLocation(2,builder.build());}view.startLocateResponse(mLocationClient); }

由于這個是被本人已經用MVP重構了的,所以只給大家展示涉及到定位的相關代碼了。我們注意一下,AMapLocationListener設為了this,所以在本地一定重寫了onLocationChanged方法:

@Override public void onLocationChanged(AMapLocation aMapLocation) {view.onLocationChangedResponse(aMapLocation); }

不要注意那么多細節,我們只需要知道在view的這個方法里面寫的刷新定位的代碼就好,我們點進去看一下:

@Override public void onLocationChangedResponse(AMapLocation aMapLocation) {if (aMapLocation.getErrorCode() == 0) {Log.e(TAG, "onLocationChanged: " + aMapLocation.getAddress() + "\n 經度:" +aMapLocation.getLongitude() + "\n 緯度:" +aMapLocation.getLatitude() + "\n 海拔: " +aMapLocation.getAltitude() + "\n 定位精度" +aMapLocation.getAccuracy());//可在其中解析amapLocation獲取相應內容。} else {//定位失敗時,可通過ErrCode(錯誤碼)信息來確定失敗的原因,errInfo是錯誤信息,詳見錯誤碼表。Log.e("AmapError", "location Error, ErrCode:"+ aMapLocation.getErrorCode() + ", errInfo:"+ aMapLocation.getErrorInfo());} }

然后效果就給大家打印日志了:


好了,今天的文章就到這里了,喜歡的朋友希望多多支持一下,你們的支持是筆者最大的動力!

總結

以上是生活随笔為你收集整理的高德地图使用——定位功能的全部內容,希望文章能夠幫你解決所遇到的問題。

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