这是我写的代码
val lco = LatLng(location.latitude, location.longitude)
val markerOptions = MarkerOptions()
myGoogleMap!!.moveCamera(CameraUpdateFactory.newLatLngZoom(lco, 15F))
myGoogleMap!!.isMyLocationEnabled = true
if (userLocationMarker == null) {
markerOptions.position(lco)
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.redcar))
markerOptions.rotation(location.bearing)
markerOptions.anchor(0.5F, 0.5F)
userLocationMarker = myGoogleMap!!.addMarker(markerOptions)
myGoogleMap!!.animateCamera(CameraUpdateFactory.newLatLngZoom(lco, 15F))
} else {
userLocationMarker!!.position = lco
userLocationMarker!!.rotation = location.bearing
}
if (userAccuracyCircle == null) {
val circleOptions = CircleOptions()
circleOptions.center(lco)
circleOptions.strokeWidth(4F)
circleOptions.strokeColor(Color.rgb(47, 214, 17))
circleOptions.fillColor(Color.rgb(255, 213, 0))
circleOptions.radius(location.accuracy.toDouble())
userAccuracyCircle = myGoogleMap!!.addCircle(circleOptions)
} else {
userAccuracyCircle!!.center = lco
userAccuracyCircle!!.radius = location.accuracy.toDouble()
}
}
大家好,我是 Android 开发新手,正在尝试使用谷歌地图 sdk 构建车辆跟踪应用程序。但我的应用程序中存在一个问题,即 CircleOption 未应用于图标。
根据 @Sumit Singh 评论的反馈,问题是并非所有位置数据都有准确的读数。因此,如果没有准确度,准确度值 (
.accuracy
) 可能为 0。
来自
getAccuracy
的文档:
仅当 hasAccuracy() 为 true 时才有效。
没有精度时该getter的默认值为0.0。 (这取决于实现,未指定。)
OP代码中,如果没有精度,这里使用0.0:
circleOptions.radius(location.accuracy.toDouble())
因此半径为 0.0 的圆不可见(尽管仍然存在)。
解决方案应该是使用:
location.hasAccuracy
如果没有精度,则 a) 没有圆,或 b) 如果没有精度,则有默认圆半径和“特殊”颜色 - 根据您的应用程序。