• 6.12.瓦片图层(TilesOverlay)


    愿你出走半生,归来仍是少年!

            瓦片图层是用于承载栅格数据进行展示的图层。由于其瓦片加载的方式,非常适合移动端进行大范围栅格信息的展示。

            瓦片图层可根据与其搭配的数据提供器/数据源类型进行不同服务格式的呈现,具体的呈现放到第7部分细说,此处概略介绍瓦片图层的基础知识以及如何进行透明度设置。

    1.构造

    TilesOverlay(MapTileProviderBase aTileProvider, Context aContext)
    TilesOverlay(MapTileProviderBase aTileProvider, Context aContext, boolean horizontalWrapEnabled, boolean verticalWrapEnabled)

            构造中需要传入数据提供器/数据源,可选的设置图层是否重复显示。

    2. 常用方法

    2.1.平铺

    voidsetHorizontalWrapEnabled(boolean horizontalWrapEnabled)
    voidsetVerticalWrapEnabled(boolean verticalWrapEnabled)

            用于设置瓦片图层是否在横向火纵向进行平铺展示。

    2.2.缩放等级

            获取当前瓦片图层的最大以及最小的缩放等级。 

    2.3.背景色

    intgetLoadingBackgroundColor()
    voidsetLoadingBackgroundColor(int pLoadingBackgroundColor)

            获取或设置瓦片图层的背景颜色。若不设置默认为白色,咋瓦片无数据的地方将会呈现为白色,将会覆盖下方的图层造成遮盖,通常设置为透明。

    1. //背景透明
    2. setLoadingBackgroundColor(Color.TRANSPARENT);

     3.图层透明度

            瓦片图层作为栅格数据的呈现方式,通常会存在多个图层叠加观看使用的需求,透明度的实时调整是一个重要的功能。在TileOverlay中未提供直接变更图层透明度的方法,但是我们可以通过变更图层的ColorFilter进行功能实现。

    以下为具体的实现过程:

    1. package spec.map.osm.overlayers.tiles;
    2. import android.content.Context;
    3. import android.graphics.Color;
    4. import android.graphics.ColorMatrix;
    5. import android.graphics.ColorMatrixColorFilter;
    6. import org.osmdroid.tileprovider.MapTileProviderBase;
    7. import org.osmdroid.views.overlay.TilesOverlay;
    8. import spec.map.osm.overlayers.IBasicLayer;
    9. /**
    10. * 瓦片图层
    11. */
    12. public class TileOverlayer extends TilesOverlay implements IBasicLayer {
    13. protected String name;
    14. protected String displayeName;
    15. /**
    16. * 颜色矩阵
    17. */
    18. protected ColorMatrix colorMatrix = new ColorMatrix();
    19. public TileOverlayer( MapTileProviderBase aTileProvider, Context aContext,String name,String displayeName) {
    20. super(aTileProvider, aContext,false,false);
    21. this.name=name;
    22. this.displayeName=displayeName;
    23. //设置为默认样式
    24. colorMatrix.set(new float[]{
    25. 1, 0, 0, 0, 0,
    26. 0, 1, 0, 0, 0,
    27. 0, 0, 1, 0, 0,
    28. 0, 0, 0, 1, 0,
    29. });
    30. setColorFilter(new ColorMatrixColorFilter(colorMatrix));
    31. //不可平铺
    32. setVerticalWrapEnabled(false);
    33. setHorizontalWrapEnabled(false);
    34. //背景透明
    35. setLoadingBackgroundColor(Color.TRANSPARENT);
    36. }
    37. /**
    38. * 设置图层元名称
    39. * @param lyName
    40. */
    41. @Override
    42. public void setName(String lyName) {
    43. this.name = lyName;
    44. }
    45. /**
    46. * 获取图层元名称
    47. * @return
    48. */
    49. @Override
    50. public String getName() {
    51. return name;
    52. }
    53. /**
    54. * 设置图层显示名称
    55. * @param lyDisplayName
    56. */
    57. @Override
    58. public void setDisplayName(String lyDisplayName) {
    59. this.displayeName = lyDisplayName;
    60. }
    61. /**
    62. * 图层图层显示名称
    63. * @return
    64. */
    65. @Override
    66. public String getDisplayName() {
    67. return displayeName;
    68. }
    69. /**
    70. * 设置图层的透明度
    71. *
    72. * @param trans 透明度0-100
    73. */
    74. public void setTransparency(int trans) {
    75. colorMatrix.set(new float[]{
    76. 1, 0, 0, 0, 0,
    77. 0, 1, 0, 0, 0,
    78. 0, 0, 1, 0, 0,
    79. 0, 0, 0, trans/100f, 0,
    80. });
    81. setColorFilter(new ColorMatrixColorFilter(colorMatrix));
    82. }
    83. /**
    84. * 获取图层当前的透明度 0-100
    85. *
    86. * @return
    87. */
    88. public int getTransparency() {
    89. var a = colorMatrix.getArray()[18];
    90. int result = Math.round(a * 100);
    91. return result;
    92. }
    93. /**
    94. * 获取瓦片的数据支撑
    95. * @return
    96. */
    97. public MapTileProviderBase getTileProvider(){
    98. return mTileProvider;
    99. }
    100. }

  • 相关阅读:
    5道关于Python基础方面的练习题
    阿里云国际版CDN的优势
    正则表达式
    【高频Java面试题】简单说说JVM堆的内存结构和GC回收流程
    Nginx(四) absolute_redirect、server_name_in_redirect、port_in_redirect 请求重定向指令组合测试
    HCIP 证书过期后要怎么重新认证?需要注意什么?
    线程池ThreadPoolExecutor
    反转字符串 反转字符串 || 反转字符串 |||
    GAMES101-ASSIGNMENT8(作业8)
    postgresql_anonymizer使用
  • 原文地址:https://blog.csdn.net/weixin_41012454/article/details/134430757