Oracle Apex - 如何更改地图标签?

时间:2014-05-30 05:45:18

标签: xml oracle-apex

我正在使用ORACLE APEX 4.2,在我的应用程序中,我正在显示阿富汗地图(AnyChart)的省份,现在我想更改地图上的标签显示。

例如,地图显示Kabol,我想用Kabul替换它,所以Lowgar也替换为Logar等等......

这是可能需要更新的XML(Map XML)文件,我尝试查找但失败了。

<?xml version = "1.0" encoding="utf-8" standalone = "yes"?>
<anychart>
  <settings>
    <animation enabled="true"/>
    <no_data show_waiting_animation="False">
      <label>
        <text>#NO_DATA_MESSAGE#</text>
        <font family="Verdana" bold="yes" size="10"/>
      </label>
    </no_data>
  </settings>
  <margin left="0" top="0" right="0" bottom="0" />
  <charts>
    <chart plot_type="Map" name="chart_25753918635243424"> 

      <chart_settings>
        <title enabled="False" />
        <data_plot_background>
          <fill type="Solid" color="0xffffff" opacity="0" />
          <border enabled="false"/>
          <corners type="Square"/>
        </data_plot_background>

        <chart_animation type="ScaleXLeft" interpolation_type="Quadratic" show_mode="OneByOne"/>
        <controls>
          <navigation_panel enabled="True"/>
          <zoom_panel enabled="True"/>
        </controls>
      </chart_settings>
      <data_plot_settings enable_3d_mode="false">
        <map_series source="asia/afghanistan.amap" id_column="REGION_NAME" labels_display_mode="Always">
         <projection type="Mercator"  />

         <defined_map_region >
          <tooltip_settings enabled="true">
            <format><![CDATA[{%Name}{enabled:False} - {%value1}{numDecimals:0,decimalSeparator:.,thousandsSeparator:\,}]]></format>
            <font family="Tahoma" size="10" color="0x000000" />
              <position anchor="Float" valign="Top" padding="10" /> 
          </tooltip_settings>
          <label_settings enabled="true" mode="Outside" multi_line_align="Center">
            <format><![CDATA[{%Name}{enabled:False} - {%value1}{numDecimals:0,decimalSeparator:.,thousandsSeparator:\,}]]></format>
            <background enabled="false"/>
            <font family="Arial" size="10" color="0x000000" />
          </label_settings>
         </defined_map_region>
          <grid enabled="true">
            <parallels enabled="true"/>
            <meridians enabled="true"/>
            <background>
          <fill type="Solid" color="0xffffff" opacity="0" />
          <border enabled="false"/>
          <corners type="Square"/>
            </background>
          </grid>
        </map_series>

      </data_plot_settings>

#DATA#
    </chart>
  </charts>
</anychart>

如果我们可以有条件地更新或替换%Name的值,那么我所能达到的任何机会都可以得到我的解决方案。

如果有人有更好的解决方案或想法,请分享......

1 个答案:

答案 0 :(得分:1)

您通常只需在MapRegions系列中指定要重命名的那些,将它们(按名称)链接到原始系列。例如......

  <data>
    <series type="MapRegions">
      <point name="Kabol" y="0">
        <attributes>
          <attribute name="newname">Kabul</attribute>
        </attributes> 
      </point>
    </series>
  </data>

但是,您的问题是PL / SQL中的#DATA#标签是动态生成数据标记的,您不能拥有多个数据标记。你需要:

选项1:如果这包含您正在绘制的一些自定义数据,则截取此内容并替换它。换句话说,不要使用#DATA#,而是使用一些PL / SQL函数调用来读取#DATA#并写下你替换的字符串。

选项2:生成如上所述的完整数据集,并在&#34; y&#34;中使用您的自定义数据。属性。 Full表示所有要点。文件中的所有区域名称都列在其网站上。这会容易得多。只需将上面的#DATA#替换为产生整个点集的函数。

选项3:您可以获取阿富汗的SHP文件,放入您的标签并使用他们的地图转换器与您的标签一起构建新的.AMAP。