ArcGIS runtime for Android

Arcgis runtime for Android 100.5

2020-07-16  本文已影响0人  _执_念__

(六) 自定义指南针

Arcgis 提供了定位功能,LocationDisplay类

初始化定位

locationDisplay = mapView.locationDisplay//获取定位类
locationDisplay?.isShowLocation = true//展示定位圆点
locationDisplay?.isShowPingAnimation = true//展示ping 动画符号
locationDisplay?.isShowAccuracy = true//展示符号以指示位置水平精度的近似区域
locationDisplay?.autoPanMode = LocationDisplay.AutoPanMode.OFF  //设置模式
//点击定位按钮,开始定位  如果打开默认就开始定位,最好写在地图加载完成监听里
fab_my_location.setOnClickListener {
    locationDisplay?.startAsync()//开始定位
}
原始效果

定位模式 :AutoPanMode

OFF
用户位置符号会随位置变化而移动,但地图不会动
RECENTER
当用户位置处于当前地图范围内时候,用户位置符号会随位置变化而移动,但地图不会动;当用户位置处于地图边缘时候,地图会自动平移是用户的当前位置重新居于显示地图中心
NAVIGATION
车载导航 地图会随着用户移动而平移,随用户转弯而旋转
COMPASS_NAVIGATION
步行导航 地图会随着用户移动而平移,随用户转弯而旋转

定位监听

val mapPoint = locationDisplay?.mapLocation//得到地图坐标系的坐标
Log.e("test",mapPoint.toString())
val wgs84Point = locationDisplay?.location?.position  //得到Wgs84经纬度坐标
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 //设置默认符号
}

其他符合一样的方法

locationDisplay?.acquiringSymbol = acquiringSymbol ;//设置当前位置的填充符号
locationDisplay?.accuracySymbol = accuracySymbol ;//设置最后一个已知位置的标记符号
locationDisplay?.pingAnimationSymbol = pingAnimationSymbol ;//设置当前位置更新时候的动画
locationDisplay?.courseSymbol = courseSymbol ;//设置当前位置的路线符号
locationDisplay?.headingSymbol = headingSymbol ;//设置当前位置设备面对方向的符号
locationDisplay?.defaultSymbol = defaultSymbol ;//设置默认符号

注意

使用arcgis内置的某些地图时,定位显示会有偏差,经过对比坐标,发现是图层的偏差,定位是准确的,因此我才写了加载天地图的方法,定位显示是准确的 加载天地图传送门

(八) 业务图层管理

上一篇 下一篇

猜你喜欢

热点阅读