《ArcGIS Runtime SDK for Android开发笔记》——问题集:如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题(转载)
Geodatabase中中文标注编码乱码一直是一个比较头疼的问题之前也不知道问题出在哪里?在百度后发现园子里的zssai已经对这个问题原因做了一个详细说明。这里将原文引用如下:
说明:此文转载自http://www.cnblogs.com/ssai2015/p/4869967.html
自 10.2版本开始,我就一直被ArcGIS Runtime SDK for Android的中文标注无限困扰。无论是驻留于内存中的Graphic 的文本符号TextSymbol,还是新增的离线geodatabase中的中文标注,只要与中文扯上了干系,就无法显示。每次接到用户的电话,我就只能 非常官方的仓促应对,文档中明确说明了这一限制啊,确实无能为力;建议您对标注层创建离线缓存吧;您的Android开发经验这么丰富,也可以自行绘制文 本来实现;等等等等。其实,自己也觉得Esri的这种疏漏太对不起广大的中国用户了。
好在对于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 //传入点几何和文本符号以构建Graphic
10 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版本将从根本上解决这一问题。小编再也不用为应用中的中文标注担心了。
说明:此文转载自http://www.cnblogs.com/ssai2015/p/4869967.html
《ArcGIS Runtime SDK for Android开发笔记》——问题集:如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题(转载)的更多相关文章
- ArcGIS API for javascript开发笔记(二)——解决ArcGIS Service中的服务在内网环境下无法进行javascript预览问题
感谢一路走来默默支持和陪伴的你~~~ ----------------------------拒绝转载-------------------------------- 1.问题说明 在使用ArcGIS ...
- Delphi For Android 开发笔记-附:如何Delphi中同时实现Windows、Android版的GetModuleFileName函数
在Windows中开发DLL时,经常会需要获取当前DLL所在目录以便读取同目录下的其他文件,而目前Delphi在开发android时,其实没多大必要获取,因为整个工程只有一个so文件,而这个so文件也 ...
- 【转】Android开发笔记(序)写在前面的目录
原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...
- 《ArcGIS Runtime SDK for Android开发笔记》
开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述
1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步
1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用
1.前言 学习ArcGIS Runtime SDK开发,其实最推荐的学习方式是直接看官方的教程.示例代码和帮助文档,因为官方的示例一般来说都是目前技术最新,也是最详尽的.对于ArcGIS Runtim ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析
1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(1)、Android Studio下载与安装
1.前言 Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工 ...
随机推荐
- zTree学习笔记
一.zTree的下载 官网:http://www.treejs.cn/v3/main.php#_zTreeInfo 解压后的目录结构为: 二.zTree入门案例 2.1 在页面中引入相关文件 要使用z ...
- C++_类继承2-多态公有继承
有时候希望同一个方法在派生类和基类中的行为是不同的.换句话说,方法的行为取决于调用该方法的对象.这种较复杂的行为称为多态——具有多种形态.即同一种方法其行为随上下文而异.有两种重要的机制可用于实现多态 ...
- LOJ6519. 魔力环(莫比乌斯反演+生成函数)
题目链接 https://loj.ac/problem/6519 题解 这里给出的解法基于莫比乌斯反演.可以用群论计数的相关方法代替莫比乌斯反演,但两种方法的核心部分是一样的. 环计数的常见套路就是将 ...
- BZOJ - 2115 独立回路 线性基
题意:给定一个图集\((V,E)\),求路径\(1...n\)的最大异或和,其中重复经过的部分也会重复异或 所求既任意一条\(1...n\)的路径的异或和,再异或上任意独立回路的组合的异或和(仔细想想 ...
- ssh,hibernate动态映射多表
[From] http://www.07net01.com/2016/01/1172051.html 最近在做OA系统(ssh),一直在想如何把框架架得更完善,此前已经在框架里集成springMVC, ...
- linux驱动之设备模型
linux 设备驱动模型 inux2.6提供了新的设备模型:总线.驱动.设备.基本关系简要的概括如下: 驱动核心可以注册多种类型的总线. 每种总线下面可以挂载许多设备.(通过kset devices) ...
- scrapy框架之(CrawlSpider)
一.CrawlSpider简介 如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调pa ...
- c#项目后期生成事件命令行常用命令
1. xcopy (复制文件) xcopy参数介绍 命令格式:XCOPY source [destination] 一堆可选的参数 参数介绍 source 指定要复制的文件. destinatio ...
- 队列同步器AbstractQueuedSynchronizer
AQS是用来构建锁或者其它同步组件的基础框架,它使用一个int变量来表示同步状态,通过内置的FIFO队列来完成获取线程的排队工作,concurrent包的作者Doug Lea期望它能称为实现大部分同步 ...
- 简单的CSS3鼠标滑过图片标题和遮罩层动画特效
此文转自:http://www.cnblogs.com/w2bc/p/5735300.html,仅供本人学习参考,版权归原作者所有! 这是一款使用CSS3制作的简单的鼠标滑过图片标题和遮罩层动画特 ...