Android MapBox 更改 MyLocation 标记的样式
Android MapBox change style of MyLocation marker
我正在为 Android (v5.1) 使用 MapBox API。我设法让它工作得很好,我使用的是自定义样式(浅色样式但稍作修改)。
我启用了 MyLocation
,它也工作正常。但是在地图上显示我的位置的点(或标记)(在 GoogleMaps 中是蓝色的)是浅灰色的,因此在地图上几乎看不见。
有什么办法可以改变它的颜色吗?我已经尝试获取 belongong 层,但在 MapBox Studio 和 Android 中都找不到它。我在哪里可以自定义它?
我找到了一个可行的 solution(虽然它适用于 Google 地图)也可以,但在我看来,这不是一个好的解决方案。
您应该可以通过 MyLocationViewSettings object and the method setForegroundTintColor 更改这些设置。
如果您已有MapboxMap,可以通过MapboxMapOptions when calling newInstance, but you may only change the accuracy tint color配置。
MapboxMap 现已弃用位置显示。推荐的解决方案是使用 LocationLayerPlugin。
编辑
从 0.4.0 开始,Mapbox 现在在每个属性前都有前缀 mapbox_
。可以在此处找到新样式名称 https://github.com/mapbox/mapbox-plugins-android/blob/master/plugin-locationlayer/src/main/res/values/styles.xml.
要更改我的位置标记,您可以将自定义样式添加到继承自 mapbox_LocationLayer 的 styles.xml
并覆盖 mapbox_foregroundDrawable 项。
<style name="CustomLocationLayer" parent="mapbox_LocationLayer">
<item name="mapbox_foregroundDrawable">@drawable/location</item>
</style>
然后你可以用这个样式创建图层:
LocationLayerPlugin(mapView, mapboxMap, locationEngine, R.style.CustomLocationLayer)
我正在为 Android (v5.1) 使用 MapBox API。我设法让它工作得很好,我使用的是自定义样式(浅色样式但稍作修改)。
我启用了 MyLocation
,它也工作正常。但是在地图上显示我的位置的点(或标记)(在 GoogleMaps 中是蓝色的)是浅灰色的,因此在地图上几乎看不见。
我找到了一个可行的 solution(虽然它适用于 Google 地图)也可以,但在我看来,这不是一个好的解决方案。
您应该可以通过 MyLocationViewSettings object and the method setForegroundTintColor 更改这些设置。
如果您已有MapboxMap,可以通过MapboxMapOptions when calling newInstance, but you may only change the accuracy tint color配置。
MapboxMap 现已弃用位置显示。推荐的解决方案是使用 LocationLayerPlugin。
编辑
从 0.4.0 开始,Mapbox 现在在每个属性前都有前缀 mapbox_
。可以在此处找到新样式名称 https://github.com/mapbox/mapbox-plugins-android/blob/master/plugin-locationlayer/src/main/res/values/styles.xml.
要更改我的位置标记,您可以将自定义样式添加到继承自 mapbox_LocationLayer 的 styles.xml
并覆盖 mapbox_foregroundDrawable 项。
<style name="CustomLocationLayer" parent="mapbox_LocationLayer">
<item name="mapbox_foregroundDrawable">@drawable/location</item>
</style>
然后你可以用这个样式创建图层:
LocationLayerPlugin(mapView, mapboxMap, locationEngine, R.style.CustomLocationLayer)