Arcgis 提供了定位功能,LocationDisplay類(lèi)
- 注意定位權(quán)限需要?jiǎng)討B(tài)獲取,這里不再演示
初始化定位
locationDisplay = mapView.locationDisplay//獲取定位類(lèi)
locationDisplay?.isShowLocation = true//展示定位圓點(diǎn)
locationDisplay?.isShowPingAnimation = true//展示ping 動(dòng)畫(huà)符號(hào)
locationDisplay?.isShowAccuracy = true//展示符號(hào)以指示位置水平精度的近似區(qū)域
locationDisplay?.autoPanMode = LocationDisplay.AutoPanMode.OFF //設(shè)置模式
//點(diǎn)擊定位按鈕,開(kāi)始定位 如果打開(kāi)默認(rèn)就開(kāi)始定位,最好寫(xiě)在地圖加載完成監(jiān)聽(tīng)里
fab_my_location.setOnClickListener {
locationDisplay?.startAsync()//開(kāi)始定位
}

原始效果
定位模式 :AutoPanMode
OFF
用戶(hù)位置符號(hào)會(huì)隨位置變化而移動(dòng),但地圖不會(huì)動(dòng)
RECENTER
當(dāng)用戶(hù)位置處于當(dāng)前地圖范圍內(nèi)時(shí)候,用戶(hù)位置符號(hào)會(huì)隨位置變化而移動(dòng),但地圖不會(huì)動(dòng);當(dāng)用戶(hù)位置處于地圖邊緣時(shí)候,地圖會(huì)自動(dòng)平移是用戶(hù)的當(dāng)前位置重新居于顯示地圖中心
NAVIGATION
車(chē)載導(dǎo)航 地圖會(huì)隨著用戶(hù)移動(dòng)而平移,隨用戶(hù)轉(zhuǎn)彎而旋轉(zhuǎn)
COMPASS_NAVIGATION
步行導(dǎo)航 地圖會(huì)隨著用戶(hù)移動(dòng)而平移,隨用戶(hù)轉(zhuǎn)彎而旋轉(zhuǎn)
定位監(jiān)聽(tīng)
val mapPoint = locationDisplay?.mapLocation//得到地圖坐標(biāo)系的坐標(biāo)
Log.e("test",mapPoint.toString())
val wgs84Point = locationDisplay?.location?.position //得到Wgs84經(jīng)緯度坐標(biāo)
Log.e("test",wgs84Point.toString())
自定義定位符合樣式
val bitmap = BitmapFactory.decodeResource(resources, R.mipmap.ic_my_location)
val bitmapDrawable = BitmapDrawable(resources, bitmap)
val defaultSymbol = PictureMarkerSymbol(bitmapDrawable);
defaultSymbol .loadAsync();
defaultSymbol .addDoneLoadingListener {
locationDisplay?.defaultSymbol = defaultSymbol //設(shè)置默認(rèn)符號(hào)
}
其他符合一樣的方法
locationDisplay?.acquiringSymbol = acquiringSymbol ;//設(shè)置當(dāng)前位置的填充符號(hào)
locationDisplay?.accuracySymbol = accuracySymbol ;//設(shè)置最后一個(gè)已知位置的標(biāo)記符號(hào)
locationDisplay?.pingAnimationSymbol = pingAnimationSymbol ;//設(shè)置當(dāng)前位置更新時(shí)候的動(dòng)畫(huà)
locationDisplay?.courseSymbol = courseSymbol ;//設(shè)置當(dāng)前位置的路線符號(hào)
locationDisplay?.headingSymbol = headingSymbol ;//設(shè)置當(dāng)前位置設(shè)備面對(duì)方向的符號(hào)
locationDisplay?.defaultSymbol = defaultSymbol ;//設(shè)置默認(rèn)符號(hào)
注意
使用arcgis內(nèi)置的某些地圖時(shí),定位顯示會(huì)有偏差,經(jīng)過(guò)對(duì)比坐標(biāo),發(fā)現(xiàn)是圖層的偏差,定位是準(zhǔn)確的,因此我才寫(xiě)了加載天地圖的方法,定位顯示是準(zhǔn)確的 加載天地圖傳送門(mén)