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()//开始定位
}
![](https://img.haomeiwen.com/i6987676/852edb4214e8a70a.png)
定位模式 :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内置的某些地图时,定位显示会有偏差,经过对比坐标,发现是图层的偏差,定位是准确的,因此我才写了加载天地图的方法,定位显示是准确的 加载天地图传送门