圆圈未应用于地图标记图标

问题描述 投票:0回答:1

这是我写的代码

     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 未应用于图标。

android kotlin android-studio google-maps
1个回答
0
投票

根据 @Sumit Singh 评论的反馈,问题是并非所有位置数据都有准确的读数。因此,如果没有准确度,准确度值 (

.accuracy
) 可能为 0。

来自

getAccuracy
的文档:

仅当 hasAccuracy() 为 true 时才有效。

没有精度时该getter的默认值为0.0。 (这取决于实现,未指定。)

OP代码中,如果没有精度,这里使用0.0:

circleOptions.radius(location.accuracy.toDouble())

因此半径为 0.0 的圆不可见(尽管仍然存在)。

解决方案应该是使用:

location.hasAccuracy

如果没有精度,则 a) 没有圆,或 b) 如果没有精度,则有默认圆半径和“特殊”颜色 - 根据您的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.