android – 在Google地图上绘制文字不再可能吗?

我正在将 Android应用程序从 Android google Maps API的版本1升级到版本2.在我的第1版代码中,我能够通过覆盖draw()方法直接在我的子类ItemizedOverlay中的地图上绘制文本,如下所示.我想要绘制的文本是动态的,我想在每个地图标记旁边显示一个附加文本项,因此在绘制/删除不同的符号时,将经常添加/删除文本.
@Override
public boolean draw(Canvas canvas,MapView mapView,boolean shadow,long when) {
    if (!shadow) {              
            canvas.drawText("some text",(float) point.x + TextOffsetX,(float) point.y + TextOffsetY,m_paint);
     }


    return super.draw(canvas,mapView,shadow,when);
}

但是,在API的第2版中似乎不可能.这不是ItemizedOverlays的概念,也没有什么可以被子类化.有没有什么方法可以在新的API版本中在GoogleMap上绘制文字?

解决方法

您可以使用以下代码从视图创建标记:
public static Bitmap createDrawableFromView(Context context,View view) {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    view.measure(displayMetrics.widthPixels,displayMetrics.heightPixels);
    view.layout(0,displayMetrics.widthPixels,displayMetrics.heightPixels);
    view.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),view.getMeasuredHeight(),Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);

    return bitmap;
}

资料来源:http://www.nasc.fr/android/android-using-layout-as-custom-marker-on-google-map-api/

编辑:如果您使用多个标记,请确保您不执行DisplayMetrics并查看每个标记的设置内容(Bitmap bitmap = …..以上的所有内容).这会大大减慢你的应用程序.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...