• 样式和外观导航 Navigation


    关于造型和外观导航

    首先贴上一张我修改后的导航条截图:

    导航滑块用于显示层在预定义的尺度。它包括一个滑块,放大和缩小按钮。本主题说明如何您可以更改的默认外观的导航控制,以满足您的项目。

    屏幕截图显示导航控制。

    下表列出了各种方法来改变滑块导航:

    不同方式的改变滑块导航

    改变使用层叠样式表(CSS)的导航滑块的位置

    水平导航滑块,使用的是备用的皮肤:

    不同的放大和缩小按钮使用自定义

    屏幕截图显示改变的导航滑块的位置。

    屏幕截图显示的水平导航滑块使用的是备用的皮肤。

    屏幕截图显示不同的放大和缩小按钮使用自定义皮肤。

    使用样式的导航滑块改变位置

    CSS样式属性的距离为30像素的顶部和右边距在地图上的滑块。由于左边的属性是默认属性,你必须使用的不是数字(NaN)值,左边的属性值不使用。

    需要注意的命名空间指令和限定引用ESRI |网站导航比例尺。组件改变其属性需要被唯一标识,以避免类名冲突。

    1. <fx:Style>  
    2.     @namespace esri "http://www.esri.com/2008/ags";  
    3.     esri|Navigation  
    4.     {  
    5.         top: 30;  
    6.         right: 30;  
    7.         left: NaN;  
    8.     }  
    9. </fx:Style>
    改变方向的导航滑块使用替代皮肤

    导航滑块的默认方向是垂直的。根据您的应用程序的要求,你可以改变方向的导航滑块水平。一个备用的皮肤中提供的应用程序编程接口(API),它可以用于此目的。这个备用的皮肤类,如下面的代码所示:

    1. <fx:Style>  
    2. @namespace esri "http://www.esri.com/2008/ags";  
    3. esri|Navigation  
    4. {  
    5. skin-class: ClassReference("com.esri.ags.skins.NavigationHorizontalSkin");  
    6. }  
    7. </fx:Style>
    更改放大和缩小按钮,使用蒙皮

    创建一个自定义皮肤,可以进一步提高导航滑盖的外观。在下面的屏幕截图中,用于替代图像的放大和缩小按钮,自定义工具提示显示瓦级(而不是地图的比例尺)。

    您可以修改默认的导航控件皮肤类来创建一个备用的外观。在下面的章节中做的步骤来创建这个新的外观:

    复制到你的项目中使用的默认外观的导航控制

    默认情况下,导航控制使用NavigationSkin.mxml的,NavigationZoominButtonSkin.mxml,并NavigationZoomoutButtonSkin.mxml的皮肤类。复制这三个文件从<Extracted_API_Download_Location> /皮肤/ / src文件夹到你的Flex项目的src文件夹,然后重命名这些文件。请参阅以下内容:

    1. 将重命名NavigationSkin.mxml MyNavigationSkin.mxml
    2. 将重命名NavigationZoominButtonSkin.mxml MyNavigationZoominButtonSkin.mxml
    3. 将重命名NavigationZoomoutButtonSkin.mxml MyNavigationZoomoutButtonSkin.mxml

    屏幕截图显示的皮肤文件。

    修改的MyNavigationSkin.mxml的的皮肤类

    这是默认的皮肤类包含的滑块,和按钮,用于放大和缩小的地图。修改皮肤提供了新的工具提示格式和改变皮肤的放大和缩小按钮。

    1. 下面的修改工具提示价值:

      请参阅功能formatSliderDataTip。此功能是用来计算的值的工具提示是可见的,当拇指按压滑块。缺省情况下,工具提示被设置到的地图的比例尺。作如下修改以显示瓷砖水平:

    1. private function formatSliderDataTip(value:Number):String  
    2. {  
    3.     const lod:LOD = hostComponent.map.lods[value];  
    4.     return lod ? (lod.level + 1).toString() : "Error";  
    1. 执行下列步骤来修改提示的外观:
       
    2. CSS属性是用来改变工具提示外观。修改后的工具提示,有一个蓝色的背景搭配是大胆的字体类型。CSS类选择器看起来像下面这样:

    <fx:Style>  

    1.     .tooltipStyle  
    2.     {  
    3.         backgroundAlpha: 1.0;  
    4.         backgroundColor: haloBlue;  
    5.         fontWeight: bold;  
    6.         color: white;  
    7.     }  
    8. </fx:Style>
    1. 定义的样式类的滑块的dataTipStyleName属性设置为下面的代码所示
      <mx:VSlider id="slider"  
                  dataTipFormatFunction="formatSliderDataTip"  

                ...  

    1. dataTipStyleName="tooltipStyle"/>

    1. 下面为放大和缩小按钮来改变皮肤类:
    2. 设置新的皮肤类引用的放大和缩小按钮。新的皮肤的类更改图标的按钮。在后续步骤中,您将创建这些被引用的皮肤类。

    <s:Button id="zoomInButton"  

    1.             ...  

    2. skinClass="MyNavigationZoomInButtonSkin"

    3.             ... />

    4. ...  

    5. <s:Button id="zoomOutButton"

    6.             ...  

    7. skinClass="MyNavigationZoomOutButtonSkin"

    8.             ... />

     

    修改后的MyNavigationSkin.mxml文件看起来像下面这样:  

    1. <?xml version="1.0" encoding="utf-8"?>  
    1. <s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"

    2. xmlns:s="library://ns.adobe.com/flex/spark"

    3. xmlns:mx="library://ns.adobe.com/flex/mx">

    4. <fx:Metadata>

    5.     [HostComponent("com.esri.ags.components.Navigation")]  

    6. </fx:Metadata>

    7. <fx:Declarations>

    8. <mx:NumberFormatter id="numberFormatter" rounding="nearest"/>

    9. </fx:Declarations>

    10. <fx:Script>

    11. <![CDATA[

    12.             import com.esri.ags.layers.supportClasses.LOD;

    13.             private function formatSliderDataTip(value:Number):String

    14.             {

    15.                 const lod:LOD = hostComponent.map.lods[value];

    16.             return lod ? (lod.level + 1).toString() : "Error";

    17.             }

    18.         ]]>

    19. </fx:Script>

    20. <fx:Style>

    21.         .tooltipStyle  

    22.         {  

    23.             backgroundAlpha: 1.0;  

    24.             backgroundColor: haloBlue;  

    25.             fontWeight: bold;  

    26.             color: white;  

    27.         }  

    28. </fx:Style>

    29. <s:states>

    30. <s:State name="normal"/>

    31. <s:State name="disabled"/>

    32. <s:State name="normalWithSlider"/>

    33. <s:State name="disabledWithSlider"/>

    34. </s:states>

    35. <s:Rect bottom="0"

    36. left="0"

    37. radiusX="10"

    38. radiusY="10"

    39. right="0"

    40. top="0">

    41. <s:fill>

    42. <s:SolidColor alpha="0.5" color="0x000000"/>

    43. </s:fill>

    44. </s:Rect>

    45. <s:VGroup gap="2"

    46. horizontalAlign="center"

    47. minHeight="34"

    48. paddingBottom="5"

    49. paddingLeft="3"

    50. paddingRight="3"

    51. paddingTop="4">

    52. <s:Button id="zoomInButton"

    53. enabled.disabled="false"

    54. enabled.disabledWithSlider="false"

    55. skinClass="MyNavigationZoomInButtonSkin"

    56. toolTip="{resourceManager.getString('ESRIMessages', 'zoomInTooltip')}" />

    57. <mx:VSlider id="slider"

    58. dataTipFormatFunction="formatSliderDataTip"

    59. dataTipPlacement="left"

    60. enabled.disabled="false"

    61. enabled.disabledWithSlider="false"

    62. enabled.normalWithSlider="true"

    63. height="160"

    64. includeIn="normalWithSlider,disabledWithSlider"

    65. liveDragging="false"

    66. maximum="{hostComponent.map.lods.length - 1}"

    67. showDataTip="true"

    68. snapInterval="1"

    69. tickColor="#000000"

    70. tickInterval="1"

    71. tickLength="3"

    72. tickOffset="-3"

    73. tickThickness="1"

    74. value="{hostComponent.map.level}"

    75. dataTipStyleName="tooltipStyle"/>

    76. <s:Button id="zoomOutButton"

    77. enabled.disabled="false"

    78. enabled.disabledWithSlider="false"

    79. skinClass="MyNavigationZoomOutButtonSkin"

    80. toolTip="{resourceManager.getString('ESRIMessages', 'zoomOutTooltip')}"/>

    81. </s:VGroup>

    82. </s:Skin>

    修改的MyNavigationZoomInButtonSkin.mxml的的皮肤类

    更改使用的图标图像显示放大按钮的位图图像。下面的代码显示了一个图像文件名 ​​为home_icon.png作为位图图像显示按钮的源代码:

    1. <s:BitmapImage  

    2.     bottom="0"  

    3.     ...  

    4.     source="@Embed(source='/assets/home_icon.png')"  

    5.     source.disabled="@Embed(source='/assets/home_icon.png')"  

    6.     source.down="@Embed(source='/assets/home_icon.png')"  

    7.     source.over="@Embed(source='/assets/home_icon.png')"  

    8. />

    修改后的MyNavigationZoomInButtonSkin.mxml文件看起来像下面这样:  

    1. <?xml version="1.0" encoding="utf-8"?>  

    2.   

    3. <s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"  

    4.         xmlns:s="library://ns.adobe.com/flex/spark"  

    5.         xmlns:mx="library://ns.adobe.com/flex/mx"  

    6.         minHeight="10"  

    7.         minWidth="10">  

    8.   

    9.     <fx:Metadata>  

    10.         [HostComponent("spark.components.Button")]  

    11.     </fx:Metadata>  

    12.   

    13.     <s:states>  

    14.         <s:State name="disabled"/>  

    15.         <s:State name="down"/>  

    16.         <s:State name="over"/>  

    17.         <s:State name="up"/>  

    18.     </s:states>  

    19.   

    20.     <s:BitmapImage  

    21.         bottom="0"  

    22.         left="0"  

    23.         right="0"  

    24.         source="@Embed(source='/assets/home_icon.png')"  

    25.         source.disabled="@Embed(source='/assets/home_icon.png')"  

    26.         source.down="@Embed(source='/assets/home_icon.png')"  

    27.         source.over="@Embed(source='/assets/home_icon.png')"  

    28.         top="0"  

    29.     />  

    30. </s:Skin>

    修改的MyNavigationZoomOutButtonSkin.mxml的的皮肤类

    更改的位图图像作为图标图像显示放大按钮。该图像文件,globe_icon.png,被用作用于显示的按钮的位图图像的源。

    1. <s:BitmapImage  

    2.     bottom="0"  

    3.     ...  

    4.     source="@Embed(source='/assets/globe_icon.png')"  

    5.     source.disabled="@Embed(source='/assets/globe_icon.png')"  

    6.     source.down="@Embed(source='/assets/globe_icon.png')"  

    7.     source.over="@Embed(source='/assets/globe_icon.png')"  

    8. />

    修改后的MyNavigationZoomOutButtonSkin.mxml文件看起来像下面这样:  

    1. <?xml version="1.0" encoding="utf-8"?>  

    2. <s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"  

    3.         xmlns:s="library://ns.adobe.com/flex/spark"  

    4.         xmlns:mx="library://ns.adobe.com/flex/mx"  

    5.         minHeight="10"  

    6.         minWidth="10">  

    7.   

    8.     <fx:Metadata>  

    9.         [HostComponent("spark.components.Button")]  

    10.     </fx:Metadata>  

    11.   

    12.     <s:states>  

    13.         <s:State name="disabled"/>  

    14.         <s:State name="down"/>  

    15.         <s:State name="over"/>  

    16.         <s:State name="up"/>  

    17.     </s:states>  

    18.   

    19.     <s:BitmapImage  

    20.         bottom="0"  

    21.         left="0"  

    22.         right="0"  

    23.         source="@Embed(source='/assets/globe_icon.png')"  

    24.         source.disabled="@Embed(source='/assets/globe_icon.png')"  

    25.         source.down="@Embed(source='/assets/globe_icon.png')"  

    26.         source.over="@Embed(source='/assets/globe_icon.png')"  

    27.         top="0"  

    28.     />  

    29. </s:Skin>

    在你的应用程序中引用的导航皮肤类

    修改后的皮肤类,现在可以用来在应用程序中通过设置皮肤中的类属性的参考。下面的代码显示了修改后的皮肤类应用程序中引用:

    1. <?xml version="1.0" encoding="utf-8"?>  

    2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  

    3. xmlns:s="library://ns.adobe.com/flex/spark"  xmlns:esri="http://www.esri.com/2008/ags">  

    4.   

    5. <fx:Style>  

    6.         @namespace esri "http://www.esri.com/2008/ags";  

    7.         esri|Navigation  

    8.         {  

    9.             skin-class: ClassReference("MyNavigationSkin");  

    10.         }  

    11.     </fx:Style>  

    12.   

    13.     <esri:Map >  

    14.         <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" />  

    15.     </esri:Map>  

    16. </s:Application>

     

     

  • 相关阅读:
    第七课 GDB调试 (下)
    设计模式之原型模式
    设计模式之再读重构
    设计模式之代理模式
    设计模式之建造者模式
    设计模式之模板方法模式
    设计模式之抽象工厂模式
    设计模式之工厂模式
    设计模式之单例模式
    设计模式之6大原则
  • 原文地址:https://www.cnblogs.com/x38160/p/3191307.html
Copyright © 2020-2023  润新知