在 Google 地图 v2 自定义标记中写入文本 - Android

Write text in Google Map v2 custom marker - Android

在我的地图中,我有一些标记列表,现在我需要实现如下输出

即带索引号的标记。

我已经搜索了 google 但没有得到任何解决方案,请帮助我想出一个实现这个的想法。

对于自定义标记:

  • 您可以创建一个 custom imagedraw 一个 index number image
  • 检查这个例子 custom marker

对于Marker Window:

您可以创建包含 ImageViewTextViews 的自定义 xml 文件:

类似于 customMapView.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@color/white_full"
    android:layout_width="match_parent"
    android:padding="@dimen/padding_micro"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/img"
        android:layout_gravity="left"
        android:src="@drawable/ic_launcher"
        android:textColor="@color/black_full"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:gravity="right"
        android:id="@+id/name"
        android:text="test"
        android:textColor="@color/black_full"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

      <!-- Other TextViews or Whatever you want-->

</RelativeLayout>

初始化 Markers 后调用 setInfoWindowAdapter 并膨胀 your custom view。类似于:

    private void customizeMarkerInfoWindow(){
        //Setting custom info window
        mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
            //Use default infoWindow frame
            @Override
            public View getInfoWindow(Marker marker) {
                return null;
            }

            @Override
            public View getInfoContents(Marker marker) {
                // Getting view from the layout file
                View view = mActivity.getLayoutInflater().inflate(R.layout.customMapView, null);
                // Getting the position from the marker
                LatLng latLng = marker.getPosition();
                //UI elements
                ImageView img = (TextView) view.findViewById(R.id.img);
                TextView coord = (TextView) view.findViewById(R.id.name);
                mukAdTv.setText(mukAd);
                //You set the image here depending on how you want to set it, if you are downloading from internet you can use PICASSO for it and set it to img
                //With picasso
                Picasso.with(mActivity).load(YOUR_IMAGE_URL).into(img);
                //From drawables
                //img.setBackground(yourDrawable);
                name.setText(latLng.latitude + ", " + latLng.longitude);

                return view;
            }
        });
    }

使用 Google 地图标记

随心所欲

我做了一个非常灵活和有趣的 hack 来实现你想要的任何类型的标记。

我做的是,

  1. 创建一个 XML 布局文件并按照您希望标记的显示方式对其进行设计。例如,在您的情况下,它将是一个带有 TextView 的绿色标记图像。

  2. 根据需要设置 TextView 的值。

  3. 将Layout文件转换成图片,得到BitmapDescriptor对象。

  4. 使用您刚刚创建的图像创建自定义标记。

与 Info Window 相比,这种视图的好处是您可以同时打开 window 多个标记。与 InfoWindow 一样,您一次只能为一个标记打开它。

代码示例