如何在Google地图V2标记Android中添加值?

4

我在谷歌上搜索了,但是没有找到。我需要这种类型的标记,其中值应该在标记中。

输入图像描述

我不知道如何做像上面显示的那样。

GoogleMap gm;

    gm = ((SupportMapFragment) (getSupportFragmentManager()
                .findFragmentById(R.id.map))).getMap();

    gm.setOnInfoWindowClickListener(this);
    gm.addMarker(new MarkerOptions()
                            .title(jsonObj.getString("project_name"));

   @Override
   public void onInfoWindowClick(final Marker marker) {

   String name = marker.getTitle(); // this displays when marker window gets tap

}

但是上面的代码只在我点击标记窗口时显示。我想要像上面的图片链接那样显示。怎么做呢?请帮忙解决这个问题。
提前感谢。
3个回答

7

使用 Android 地图工具库

以下是该网站的链接,请查看发布的视频。

http://googlemaps.github.io/android-maps-utils/

1. 从以下网址下载库:

github.com/googlemaps/android-maps-utils

2. 要使用该库,请参阅以下链接:

使用 ADT 使用 android-maps-utils

  IconGenerator tc = new IconGenerator(this);
  Bitmap bmp = tc.makeIcon("hello"); // pass the text you want.

然后将位图设置为地图对象

  .icon(BitmapDescriptorFactory.fromBitmap(bmp))); 

Snap

enter image description here


3
为了完全免费绘制标记图标,代码可能如下所示。在这种情况下,只有文本是标记的内容。但是您可以将任何东西绘制到画布上。只需确保调整大小即可。
public BitmapDescriptor getTextMarker(String text) {

    Paint paint = new Paint();
    /* Set text size, color etc. as needed */
    paint.setTextSize(24);

    int width = (int)paint.measureText(text);
    int height = (int)paint.getTextSize();

    paint.setTextAlign(Align.CENTER);
    // Create a transparent bitmap as big as you need
    Bitmap image = Bitmap.createBitmap(width, height, Config.ARGB_8888);
    Canvas canvas = new Canvas(image);
    // During development the following helps to see the full
    // drawing area:
    canvas.drawColor(0x50A0A0A0);
    // Start drawing into the canvas
    canvas.translate(width / 2f, height);
    canvas.drawText(text, 0, 0, paint);
    BitmapDescriptor icon = BitmapDescriptorFactory.fromBitmap(image);
    return icon;
}

在构建标记选项时,请使用此方法:

mMap.addMarker(new MarkerOptions()
.position(new LatLng(lati, longi))
.icon(getTextMarker("some text"));

嗨,这里的paint对象是什么? - shyam.y
这是 Paint 的一个实例,你之前已经准备好了它(作为成员变量),并设置了你想在标记中使用的颜色、文本大小等。为了避免大量的对象分配,通常在 Android 中只需准备一次这样的对象。 - user2808624
谢谢,我已经在这上面工作了,但是标记并没有显示在地图上。你能指导我一下吗?我想创建单独的标记图标,将标记计数作为文本,并使用不同颜色的背景。 - shyam.y

2
根据Google Maps for Android V2文档:
信息窗口允许您在用户点击地图上的标记时向用户显示信息。默认情况下,如果标记有设置标题,则用户点击标记时会显示信息窗口。一次只能显示一个信息窗口。如果用户点击另一个标记,则当前窗口将被隐藏,新的信息窗口将被显示。您可以通过调用目标标记上的showInfoWindow()来编程显示信息窗口。通过调用hideInfoWindow()可以隐藏信息窗口。
您可以像这样显示信息窗口:
Marker marker = myMap.addMarker(new MarkerOptions()
                     .position(latLng)
                     .title("Title")
                     .snippet("Snippet")
                     .icon(BitmapDescriptorFactory
                     .fromResource(R.drawable.marker)));

marker.showInfoWindow();

我希望这对你有用。


当用户点击时,信息窗口会显示,但是开发者希望在没有信息窗口的情况下显示图像。 - Raghunandan
感谢@Raghunandan,你节省了我很多时间。再次感谢。我有一个小问题,是否可以更改标记图标的颜色?它显示为白色。 - user2427497
@Tinkerbell 是的,你可以有蓝色、橙色、绿色和红色。 - Raghunandan
@Tinkerbell Bitmap bmp = drawTextToBitmap(this,R.drawable.bubble_green,"mytext")。现在将位图设置为地图对象的图标。.icon(BitmapDescriptorFactory.fromBitmap(bmp))) - Raghunandan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接