1、前言

问题:在部分Android机型中使用ArcGIS for Android 10.1.1 API 中文标注导致程序异常崩溃。

说明:手里有两台机器一台是Nexus4,原生系统,版本4.4.4,使用10.1.1API中的TextSymbol标注中英文显示无任何异常。另一台机器是Note3,系统版本三星定制系统4.4.2,使用该机器在未升级前使用TextSymbol标注中英文显示正常,但是系统升级到4.4.2时,英文标注正常,中文标注导致程序卡死异常崩溃。什么原因产生的暂时还没有搞清楚,初步想法是用文字生成图片然后用PictureMarkerSymbol进行标注。

以下文本生成图片的解决方案主要参考牧羊的专栏ArcGIS For Android 中文标注不显示解决方案实现,考虑到不同分辨率及DPI下图片的显示效果不同,特此对不同dpi的手机做了显示区分,这里我以dpi400为界分了两级,使得note3和nexus4显示效果统一。

  //DPI获取核心代码
  DisplayMetrics metric = new DisplayMetrics();
  viewerActivity.getWindowManager().getDefaultDisplay().getMetrics(metric);
  int densityDpi = metric.densityDpi; // 屏幕密度DPI
  if(densityDpi>400){
  return 2;
  }else{
   return 1;
  }

2、解决方案

 /**
* 文字转换BitMap
* @param text
* @return
*/
public static Drawable createMapBitMap(String text) {

     //默认字体大小个高度
int size = 50;
int height = 60;
     //根据dpi级别设置自己大小和高度,是nexus4、note3中显示效果统一
if(CommonValue.dpilevel==1){
size = 22;
height = 30;
}else if(CommonValue.dpilevel==2){
size = 50;
height = 60;
} Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setTextSize(size);
paint.setAntiAlias(true);
paint.setTextAlign(Align.LEFT);//位置 float textLength = paint.measureText(text); int width = (int) textLength; Bitmap newb = Bitmap.createBitmap(width*2, height*2, Config.ARGB_8888);
Canvas cv = new Canvas(newb);
cv.drawColor(Color.parseColor("#00000000")); cv.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG)); cv.drawText(text, width, size, paint);
cv.save(Canvas.ALL_SAVE_FLAG);// 保存
cv.restore();// 存储 return new BitmapDrawable(newb); }

使用方法

PictureMarkerSymbol markerSymbol = new PictureMarkerSymbol( CacheData.createMapBitMap("test")); 
Graphic graphic2 = new Graphic(env.getCenter(), markerSymbol);

标注显示效果

3、参考链接

http://blog.csdn.net/u014014578/article/details/36180485

ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题的更多相关文章

  1. Android 对程序异常崩溃的捕捉

    转载博客:http://blog.csdn.net/i_lovefish/article/details/17719081 以下为异常捕捉处理代码: import java.io.BufferedRe ...

  2. arcgis for android 读取shp文件中文乱码解决方法

    设置注册表默认字符,即可解决中文乱码问题. 'dbfDefault' 设置方法1.开始--运行,输入”Regedit“,打开注册表.2.如是用的是 10.x 版本 ArcGIS Desktop,定位到 ...

  3. android看不见main函数怎么办?程序异常了,能够不提示“xxx软件停止执行”吗?

    今天遇到了这个问题,分享一下解决方式. android没有main 函数,自然也就不存在main里面加入异常处理来实现全局异常捕获的方案.那android程序有全局异常补货的解决方式吗? 答案是有的: ...

  4. Arcgis android 10.2安装方法

    请仔细对照博文做!!! 将arcgis android 10.2的压缩包解压 arcgis android 10.2下载地址http://pan.baidu.com/s/1sj2LKO9 Help-& ...

  5. arcgis for android常见问题回答

    Q:arcgis for android最新版本是多少?(2014-7-18) Arcgis for android 10.2.3 sdk 百度盘下载地址:http://pan.baidu.com/s ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——问题集:如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题(转载)

    Geodatabase中中文标注编码乱码一直是一个比较头疼的问题之前也不知道问题出在哪里?在百度后发现园子里的zssai已经对这个问题原因做了一个详细说明.这里将原文引用如下: 说明:此文转载自htt ...

  7. 如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题

    自10.2版本开始,我就一直被ArcGIS Runtime SDK for Android的中文标注无限困扰.无论是驻留于内存中的Graphic 的文本符号TextSymbol,还是新增的离线geod ...

  8. ArcGIS Android SDK 中文标注乱码

    Android使用如下代码添加标注: TextSymbol ts = new TextSymbol(12, "名称", Color.RED);Graphic gp = new Gr ...

  9. ArcGis Android 10.2.6更新文档翻译

    ArcGis Android 10.2.6更新文档翻译 @[ArcGis Android|10.2.6|更新文档] 本文描述了ArcGIS Runtime SDK for Android 10.2.6 ...

随机推荐

  1. Note: Bimodal Content Defined Chunking for Backup Streams

    CDC算法给出了一个chunk的大小的最小值.最大值.平均值的界定. Method Using chunk existence information breaking-apart algorithm ...

  2. C++基础之类和对象二

    (1)指向类的成员的指针分为指向数据成员的指针和指向成员函数的指针两种.一个类的对象用运算符“.*”来操作指向该类成员的指针,而一个指向类的对象的指针用运算符“->”来操作指向该类成员的指针.( ...

  3. [CentOS7] Segmentation fault (core dumped),但是在主机上找不到core文件

    1.问题描述 程序执行报:Segmentation fault (core dumped),但是在主机上找不到core文件 2.如何让系统生成core file /home>ulimit -ac ...

  4. Elasticsearch+Logstash+Kibana搭建分布式日志平台

    一.前言 编译安装 1.ELK简介 下载相关安装包地址:https://www.elastic.co/cn/downloads ELK是Elasticsearch+Logstash+Kibana的简称 ...

  5. OTRS 二次开发笔记

    公司使用otrs系统处理业务工单,各种事件流.因为是开源免费系统,因此需要在上面做一些功能补充或定制的二次开发. otrs是什么? OTRS 是一个功能强大的工单系统.完美适用于服务台(Help De ...

  6. Objective-C的Runtime System

    [0] Outline --  [1] 版本和平台 --  [2] 与Runtime System交互 --  [3] 方法的动态决议 --  [4] 消息转发 --  [5] 类型编码 --  [6 ...

  7. Unity---DOTween插件学习(2)---设置参数、Ease曲线、回调函数、动画控制函数

    目录 6.Set设置参数 7.Ease曲线 8.回调函数 9.动画控制函数 本文及系列参考于Andy老师的DOTween系列 欢迎大家关注Andy老师 6.Set设置参数 在Unity中添加一个Cub ...

  8. k8s yaml文件详解

    1.yaml格式的Pod配置文件内容及注解 深入Pod之前,首先我们来了解下Pod的yaml整体文件内容及功能注解. 如下: # yaml格式的pod定义文件完整内容: apiVersion: v1 ...

  9. element-ui国际化探索(大型项目适用)

    配置好了,自己感觉是比较简单的,就是有一点点繁琐,加油吧. 由于保密,无法拿出项目,故写了一个小demo,记录一下,适用于大型项目: 项目中需要自定义切换中/英文(国际化),基于vue.js,结合vu ...

  10. code和pre竟然有区别!!!!

    坑爹的,今天复习基础,本来写了个获取样式,为了显示出我的代码,才发现了 code和pre标签竟然是不同的. 1.用 JS 的代码注释风格来说 code 就是 // , <pre> 就是 / ...