Arcgis 提供了定位功能,LocationDisplay類
- 注意定位權(quán)限需要?jiǎng)討B(tài)獲取,這里不再演示
初始化定位
locationDisplay = mapView.locationDisplay//獲取定位類
locationDisplay?.isShowLocation = true//展示定位圓點(diǎn)
locationDisplay?.isShowPingAnimation = true//展示ping 動(dòng)畫符號(hào)
locationDisplay?.isShowAccuracy = true//展示符號(hào)以指示位置水平精度的近似區(qū)域
locationDisplay?.autoPanMode = LocationDisplay.AutoPanMode.OFF //設(shè)置模式
//點(diǎn)擊定位按鈕,開始定位 如果打開默認(rèn)就開始定位,最好寫在地圖加載完成監(jiān)聽里
fab_my_location.setOnClickListener {
locationDisplay?.startAsync()//開始定位
}
原始效果
定位模式 :AutoPanMode
OFF
用戶位置符號(hào)會(huì)隨位置變化而移動(dòng),但地圖不會(huì)動(dòng)
RECENTER
當(dāng)用戶位置處于當(dāng)前地圖范圍內(nèi)時(shí)候,用戶位置符號(hào)會(huì)隨位置變化而移動(dòng)积暖,但地圖不會(huì)動(dòng);當(dāng)用戶位置處于地圖邊緣時(shí)候怪与,地圖會(huì)自動(dòng)平移是用戶的當(dāng)前位置重新居于顯示地圖中心
NAVIGATION
車載導(dǎo)航 地圖會(huì)隨著用戶移動(dòng)而平移夺刑,隨用戶轉(zhuǎn)彎而旋轉(zhuǎn)
COMPASS_NAVIGATION
步行導(dǎo)航 地圖會(huì)隨著用戶移動(dòng)而平移,隨用戶轉(zhuǎn)彎而旋轉(zhuǎn)
定位監(jiān)聽
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)畫
locationDisplay?.courseSymbol = courseSymbol ;//設(shè)置當(dāng)前位置的路線符號(hào)
locationDisplay?.headingSymbol = headingSymbol ;//設(shè)置當(dāng)前位置設(shè)備面對方向的符號(hào)
locationDisplay?.defaultSymbol = defaultSymbol ;//設(shè)置默認(rèn)符號(hào)
注意
使用arcgis內(nèi)置的某些地圖時(shí),定位顯示會(huì)有偏差遍愿,經(jīng)過對比坐標(biāo)存淫,發(fā)現(xiàn)是圖層的偏差,定位是準(zhǔn)確的沼填,因此我才寫了加載天地圖的方法桅咆,定位顯示是準(zhǔn)確的 加載天地圖傳送門