ArcGIS Flex 自定义DrawTip

本文介绍如何在FlexAPI中自定义DrawTool工具的默认提示文本,通过修改ESRIMessages文件实现定制化操作提示。

      使用过Flex API的人都知道里面有个DrawTool工具,可以画点、线、面,非常的方便。于是就有人提问过这样的问题:DrawTool有个默认的drawtip提示,比如Click to start adding points,Double-click to finish等等,如何修改这些默认的ToolTip?

      FlexViewer或Flex API在之前版本有个ESRIMessages.properties文件,里面记录了FlexViewer默认的一些设置,其中就包括这个DrawTip。而到了2.5版本之后,这个文件莫名的消失了,取而代之的是locale文件夹中的ViewerStrings文件。但细心的读者会发现,修改ViewerStrings.properties似乎并不能修改这个DrawTip,它仍然需要修改ESRIMessages去修改。这个ESRIMessages我们可以去官网帮助中查找。如下图为ESRIMessages。

 

 

 

     因此,我们只需要在ESRIMessages中添加如下代码,并将这个ESRIMessages文件放在根目录中即可。

# -- UI related messages for DrawTool --
#
drawTooltipMappoint=Custom Draw Point
drawTooltipMultipointStart=Click to start adding points
drawTooltipMultipointFinish=Double-click to finish
drawTooltipPolylinePolygonStart=My Custom Draw Polyline
drawTooltipPolygonContinueDrawing=Click to continue drawing
drawTooltipPolylinePolygonComplete=Double Click to Finish

 

    如下为实现结果:

   

 

 

 

关于其它解决方法,也可参考这个帖子。http://forums.arcgis.com/threads/26074-Draw-Widget-tooltips

`computeIfAbsent` 是 `java.util.Map` 接口(及其实现类,如 `HashMap`)提供的一个方法,属于 Java 8 引入的函数式编程增强特性,用于根据键获取值,若键不存在则计算并插入新值,常用于简化条件判断和值的初始化逻辑 [^3]。 ### 方法签名 ```java V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) ``` 在上述签名中,`key` 为要计算其值的键,`mappingFunction` 为计算新值的函数 [^3][^5]。 ### 返回值 如果映射包含指定键的映射关系,返回与该键关联的值;否则返回由给定的计算函数计算的值 [^5]。 ### 适用场景 - 当需要根据某个键存储多个值(例如,在 `List` 或 `Set` 中)并确保容器已经初始化时适用。 - 避免在将新值放入 `Map` 之前手动检查 `Map` 是否已包含特定的键 [^1]。 ### 使用示例 ```java import java.util.HashMap; import java.util.Map; import java.util.ArrayList; import java.util.List; public class ComputeIfAbsentExample { public static void main(String[] args) { Map<String, List<String>> map = new HashMap<>(); // 向 map 中添加元素 String key = "fruits"; String value = "apple"; // 使用 computeIfAbsent 方法 map.computeIfAbsent(key, k -> new ArrayList<>()).add(value); // 再次添加元素 String anotherValue = "banana"; map.computeIfAbsent(key, k -> new ArrayList<>()).add(anotherValue); // 输出结果 System.out.println(map.get(key)); } } ``` 在上述代码中,首先创建了一个 `Map` 对象,键的类型为 `String`,值的类型为 `List<String>`。然后使用 `computeIfAbsent` 方法,若 `fruits` 键不存在,会创建一个新的 `ArrayList` 并将其与该键关联,之后将 `apple` 元素添加到该列表中。再次使用该方法添加 `banana` 元素,由于键已经存在,会直接获取关联的列表并添加元素。最后输出该键对应的列表。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值