Mapbox:更改我所在位置的可绘制内容

时间:2018-03-25 13:40:57

标签: android mapbox

我想将我的位置指示器从蓝色圆圈更改为自定义绘图: enter image description here

AFAIK,我可以将此蓝色圆圈更改为自定义drawable的唯一方法是使用styles.xml,我无法以编程方式更改样式:

     <style name="CustomLocationLayer" parent="LocationLayer">
        <item name="backgroundDrawable">@drawable/CUSTOM_DRAWABLE</item>
        <item name="foregroundDrawable">@drawable/CUSTOM_DRAWABLE</item>
    </style>

locationPlugin.applyStyle(R.style.CustomLocationLayer)

但是我需要在运行时生成这个CUSTOM_DRAWABLE,我找不到任何方法/设置器来用于在运行时更改它。怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

我发现了什么?没有解决方法,我们不能这样做。

唯一的方法是使用styles.xml

隐藏此蓝色指示符
<style name="EmptyLocationLayer" parent="LocationLayer">
        <item name="foregroundDrawable">@drawable/ic_location_indicator_workaround</item>
        <item name="backgroundDrawable">@drawable/ic_location_indicator_workaround</item>
        <item name="accuracyColor">#00000000</item>
</style>

<vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="14dp"
    android:height="14dp"
    android:viewportHeight="14.0"
    android:viewportWidth="14.0">
    <path
        android:fillColor="#00000000"
        android:pathData="M7,7m-7,0a7,7 0,1 1,14 0a7,7 0,1 1,-14 0"/>
</vector>

初始化LocationPlugin后,我们需要应用此样式:

locationPlugin?.applyStyle(R.style.EmptyLocationLayer)

在致电之前

map.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location.latitude, location.longitude), DEFAULT_ZOOM))

我正在将自定义标记添加到地图map.addMarker(customMarker)