如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题
来源:互联网 发布:本机端口号查询 编辑:程序博客网 时间:2024/05/22 05:18
好在对于Graphic的中文TextSymbol的显示很快就找到了便捷的方法,也算是有了初步的交代。不多废话,直接奉上简单的代码片段吧。
1 //创建点几何 2 Point tapPoint = mMapView.toMapPoint(x, y); 3 4 //创建文本符号 5 String showLabel = "哈哈,中文标注图形点"; 6 TextSymbol tapTextSymbol = new TextSymbol(28, showLabel, Color.BLUE); 7 tapTextSymbol.setFontFamily("DroidSansFallback.ttf"); 8 9 //传入点几何和文本符号以构建Graphic10 Graphic tapGraphic = new Graphic(tapPoint, tapTextSymbol);11 12 //将创建的Graphic添加到GraphicsLayer上13 gLayer.addGraphic(tapGraphic);
是的,问题的关键在于字体的指定,即,调用setFontFamily()准确识别到正确的字体。大多数的Android设备上都会默认安装DroidSansFallback.ttf这一字体,拿来即可。
Graphic的问题解决了,接下来呢,就该关注离线geodatabase的标注了,毕竟,这一格式是10.2.X的最大亮点,也是移动端应用所亟需的。毕竟,野外作业中能够顺利联网的可能性为零。千呼万唤终露面,可惜却还文绉绉的抱起了琵琶——中文标注呢?中文标注呢?
一个接一个的用户需求迫着我开始了新一轮的尝试。对于同一数据,为什么英文和数字都可以正常显示,而独独中文标注无法显示呢?首先,利用Firefox提供的SQLiteManager对要素Table进行查看,数据没问题;那么80%~90%就是字体设置的问题了。Android设备默认安装了DroidSansFallback.ttf这一可支持中文的字体,那么参照ArcGIS for Server对字体的解决办法,安装此字体并重启机器,创建mxd并选择这一字体,而后创建geodatabase。多次三番的折腾证明:完全无效啊,甚至连乱码都没有。着实无语。
9月份的时候,Esri Developer小组终于验证得出,对Portal for ArcGIS 托管的要素服务经过若干属性更新后下载得到的离线geodatabase是可以正确显示中文的。这一消息终于再次激发了我的斗志,那就找两者的差别呗。经过半天的不懈努力,真相揭露。
首先,利用SQLiteManager打开所创建的离线geodatabase。
其次,最关键的步骤就是找到列表中GDB_ServiceItems打开并双击查看
很明显地,不管是ItemInfo还是DrawingInfo中的FontFamily都正确设置为Droid Sans Fallback。但是,这种情况下,中文标注仍然是无法显示的。您需要做的则是编辑ItemInfo字段,将其中的family修改为DroidSansFallback.ttf,如下:
再次加载这一修改后的geodatabase,中文标注终于出现了。
family修改前:
family修改后:
是的,你没看错,就是这么傻。就相当于你听到张三的名字,完全不知道是谁,必须得见到本尊,才清楚,原来是他啊,我认识,我认识,呵呵,呵呵。。。。。
既然ArcMap创建的离线geodatabase可以正确显示中文标注了。那么类比的,对于由在线服务获取的离线geodatabase,只需要代码实现1)连接这一SQLite数据库,2)找到GDB_ServiceItem表的ItemInfo字段,3)修改这一属性值。具体实现就劳驾大家了。这一小章节就到此吧。
小报,小报:
根据Esri非官方渠道,明年3月份推出的Quarz版本将从根本上解决这一问题。小编再也不用为应用中的中文标注担心了。
- 如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题
- 再谈ArcGIS Runtime SDK for Android中文标注无法显示的问题
- 《ArcGIS Runtime SDK for Android开发笔记》——问题集:使用TextSymbol做标注显示乱码
- Arcgis for Android解决标注TextSymbol中文字体乱码的问题
- ArcGIS For Android 中文标注不显示解决方案
- arcgis for android 中文显示问题
- 解决arcgis for android中feature不显示的问题
- ArcGIS Runtime SDK for Android 授权(arcgis android 去除水印)
- 《ArcGIS Runtime SDK for Android开发笔记》——(10)、ArcGIS Runtime SDK支持的空间数据类型
- 如何解决wampsever 中mysql无法显示中文的问题
- ArcGIS发布最新的 ArcGIS Runtime SDK for Android v10.1.1
- 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用
- ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题
- ArcGIS Runtime SDK for Android----Release notes for 10.2.3
- 《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述
- ArcGIS Runtime SDK for iOS开发之-显示你的位置
- ArcGIS Runtime SDK for Android v1.1发布
- ArcGIS Runtime SDK for Android 1.1 搭建开发环境说明
- hdu5510 kmp+二分
- [004]微信公众账号开发教程第1篇-根据用户openID获取用户基本信息
- PHP与JavaScript在处理数组方面的不同之处
- [Unity热更新]lua基础(一)
- poj 2752 Seek the Name, Seek the Fame
- 如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题
- ArcGIS for Server内置JS Viewer的离线部署和配置
- ArcGIS for Server 10.3.X 新型紧凑型缓存的解读和应用
- 浅窥ArcGIS Data Store之两斑
- 杭电1040——As Easy As A+B(排序)
- LIS
- Hbase-1.1.2 HRegionServer全部挂掉的报错信息图片及解决办法
- 获取元素CSS值之getComputedStyle方法熟悉
- 数据库事务