ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题
来源:互联网 发布:python url编码 编辑:程序博客网 时间:2024/06/06 17:08
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
同步博客:http://www.cnblogs.com/gis-luq作者:gis-luq 邮箱:luqiang.gis@foxmail.com
0 0
- ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题
- 如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题
- 再谈ArcGIS Runtime SDK for Android中文标注无法显示的问题
- ArcGIS For Android 中文标注不显示解决方案
- Arcgis for Android解决标注TextSymbol中文字体乱码的问题
- ArcGIS for Android 1.1 MapView 的Activity退出时整个程序崩溃问题
- ArcGIS API For JS 文本标注换行
- arcgis for android 中文显示问题
- android 异步弹出窗口 导致程序崩溃的问题
- ArcGIS API for Android 案例教程 1
- 两种方式 用 ArCGIS API for Silverlight增加标注
- arcgis api for flex 设置 TextSymbol 竖排字 道路标注
- ArCGIS API for Silverlight 实现闪烁标注功能
- ArCGIS API for Silverlight 实现闪烁标注功能
- Arcgis api for android V2.0模拟器调试问题
- Android:处理程序崩溃异常
- Android:处理程序崩溃异常
- Android程序异常崩溃处理
- Eucalyptus学习汇总
- POJ 3667 Hotel (线段树区间合并 )
- inline elment new line
- SQLServer找出执行慢的SQL语句
- NodeJS: 使用 (Generator) 生成器解决 JavaScript 回调嵌套问题
- ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题
- iOS kvc
- 零时表
- 求一个数的二进制表示中1的个数
- SQL Server将列值转为列名输出
- wordpress优化头部
- 内存池技术介绍
- js undefined & null
- mysql中engine=innodb和engine=myisam的区别