• ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题


     

    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

  • 相关阅读:
    Redis Cluster笔记
    http协议之 COOKIE
    lor框架代码分析
    PHP--SPL扩展学习笔记
    lua协程----ngx-lua线程学习笔记
    设计模式
    eclipse中使用maven创建springMVC项目
    一般处理程序里使用session对象
    .Dot NET Cored简介
    Spring 依赖注入(基本注入和自动适配注入)
  • 原文地址:https://www.cnblogs.com/gis-luq/p/4040319.html
Copyright © 2020-2023  润新知