android - 如何使用 Mapbox Kotlin 在真实设备上显示当前位置
问题描述
在我的模拟器上,我已经能够显示假位置,但是当我在真正的 android 设备上尝试我的应用程序时,位置没有显示,我不知道我的代码有什么问题我从 Mapbox 获得了这个代码网站并在遵循 Mapbox 文档之后在此处显示用户的位置 我想出了什么
class UserLocationActivity : AppCompatActivity(), PermissionsListener, OnMapReadyCallback {
private var mapView: MapView? = null
private var map: MapboxMap? = null
private var permissionManager: PermissionsManager? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Mapbox.getInstance(this, getString(R.string.access_token))
setContentView(R.layout.activity_user_location)
mapView = findViewById(R.id.usermapview)
mapView?.onCreate(savedInstanceState)
mapView?.getMapAsync { mapboxMap ->
map = mapboxMap
enableLocation(map?.style!!)
mapboxMap.setStyle(Style.MAPBOX_STREETS) {
}
}
}
@SuppressLint("MissingPermission")
fun enableLocation(style: Style){
if (PermissionsManager.areLocationPermissionsGranted(this)) {
val customLocationComponentOptions = LocationComponentOptions.builder(this)
.trackingGesturesManagement(true)
.accuracyColor(ContextCompat.getColor(this, R.color.mapbox_blue))
.build()
val locationComponentActivationOptions = LocationComponentActivationOptions.builder(this, style)
.locationComponentOptions(customLocationComponentOptions)
.build()
map?.locationComponent?.apply {
// Activate the LocationComponent with options
activateLocationComponent(locationComponentActivationOptions)
// Enable to make the LocationComponent visible
isLocationComponentEnabled = true
// Set the LocationComponent's camera mode
cameraMode = CameraMode.TRACKING
// Set the LocationComponent's render mode
renderMode = RenderMode.COMPASS
}
} else {
permissionManager = PermissionsManager(this)
permissionManager?.requestLocationPermissions(this)
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>,
grantResults: IntArray) {
permissionManager?.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
override fun onExplanationNeeded(permissionsToExplain: MutableList<String>?) {
Toast.makeText(this, "text", Toast.LENGTH_LONG).show()
}
@SuppressLint("MissingPermission")
override fun onPermissionResult(granted: Boolean) {
if (granted) {
enableLocation(map?.style!!)
} else {
Toast.makeText(this, "text", Toast.LENGTH_LONG).show()
finish()
}
}
override fun onMapReady(mapboxMap: MapboxMap) {
enableLocation(map?.style!!)
}
}
解决方案
推荐阅读
- amazon-s3 - 尝试编辑存储桶策略时访问被拒绝
- javascript - 如何将父元素的高度设置为与子元素相同?
- android - Android YUV到灰度性能优化
- python - 使用 Python (3.6) Behave,使用 JUnit 报告,如何阻止步骤定义出现在报告中?
- php - Craft CMS - 如何在 PHP 条目查询中包含资产字段?
- php - 关于 Github 文件上传问题的 Codeigniter 项目
- bash - 将远程主机的 < /dev/null 结果保存到文本文件中的本地计算机
- android - 如何在 android 中保存函数调用并在以后再次使用它 Android
- android - SharedPreferences 在 ValueEventListener 中放入空值
- python - python中的组合列表理解