Установите LocationComponentOptions foregroundDrawable динамически - PullRequest
0 голосов
/ 20 января 2020

Я использую MapBox 8.4.0, и у меня есть следующий фрагмент, чтобы загрузить карту во фрагмент, закрепив текущее местоположение пользователя маркером. Мне нужно настроить маркер, динамически устанавливая foregroundDrawable с изображением, загруженным из сетевого URL-адреса. Но foregroundDrawable принимает только идентификатор ресурса в качестве параметра.

val customOptions = LocationComponentOptions.builder(context!!)
    .elevation(5f)
    .foregroundDrawable(R.drawable.icon_profile) // set image dynamically
    .backgroundDrawable(R.drawable.icon_current_location)
    .build()

val activationOptions = LocationComponentActivationOptions.builder(context!!, style)
    .locationComponentOptions(customOptions)
    .build()

mapboxMap.locationComponent.apply {
    activateLocationComponent(activationOptions)
    isLocationComponentEnabled = true
    cameraMode = CameraMode.TRACKING
    renderMode = RenderMode.NORMAL
}

Это должно выглядеть следующим образом: profile icon заменяется загруженным изображением во время выполнения.

https://i.stack.imgur.com/eoXuG.jpg

Каким образом я мог бы достичь этого?

Ответы [ 2 ]

1 голос
/ 30 января 2020

Мы можем использовать foregroundName() для установки значка Dynami c для нашего маркера.

mapboxMap.getStyle { loadedStyle ->

    loadedStyle.addImage("marker-icon", bitmapIcon) // create a Bitmap icon; you may use Glide to load image from URL

    val locationComponentOptions: LocationComponentOptions =
        LocationComponentOptions.builder(context!!)
            .foregroundName("marker-icon") // set icon for the marker
            .build()

    val activationOptions =
        LocationComponentActivationOptions.builder(context!!, loadedStyle)
            .locationComponentOptions(locationComponentOptions)
            .build()

    mapboxMap.locationComponent.apply {
        activateLocationComponent(activationOptions)
        ...
    }
}
0 голосов
/ 06 февраля 2020

Пролистайте здесь комментарий, чтобы сказать, что если вы используете Picasso вместо Glide, { ссылка } показывает, как использовать Picasso для установки цели для получения Bitmap из сетевого URL-вызова.

...