我正在构建一个谷歌地图应用程序。我有不同的坐标对象,但每个对象都有一个唯一的int值,我想在标记旁边显示。
例如,对于具有特定坐标和值123的对象,我想将标记放在地图上(在那些坐标处),并在其旁边放置值123.
我一直在做一些研究,我发现似乎合理的唯一方法是使用Android API从基本图像创建自己的位图图像和一些“附加”的字符串,并将其用于标记图标。
有更好的方法吗?
在同一主题上,您可以同时在地图上显示每个标记的标题吗?
答案 0 :(得分:1)
https://stackoverflow.com/a/14812104
请参阅链接。 snipet用于在制造商上添加文本,也可以自定义。
答案 1 :(得分:1)
是的@kisslory您可以完全自定义每个标记以满足您的需求。
在为每个标记设置位图时,您可以使用以下方法从给定资源创建新位图。
public static Bitmap drawTextToBitmap(Context gContext,
int gResId,
String gText) {
Resources resources = gContext.getResources();
float scale = resources.getDisplayMetrics().density;
Bitmap bitmap =
BitmapFactory.decodeResource(resources, gResId);
android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig();
// set default bitmap config if none
if(bitmapConfig == null) {
bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
}
// resource bitmaps are imutable,
// so we need to convert it to mutable one
bitmap = bitmap.copy(bitmapConfig, true);
Canvas canvas = new Canvas(bitmap);
// new antialised Paint
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
// text color - #3D3D3D
paint.setColor(Color.rgb(61, 61, 61));
// text size in pixels
paint.setTextSize((int) (14 * scale));
// text shadow
paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);
// draw text to the Canvas center
Rect bounds = new Rect();
paint.getTextBounds(gText, 0, gText.length(), bounds);
int x = (bitmap.getWidth() - bounds.width())/2;
int y = (bitmap.getHeight() + bounds.height())/2;
canvas.drawText(gText, x, y, paint);
return bitmap;
}