如何在Google地图标记上附加TextView

got*_*995 2 android google-maps google-maps-markers google-maps-api-2

我可能已经问了一个类似的问题,但没有得到任何答案,因为我对我想做的事情并不十分准确.所以基本上我使用来自Chris Broadfoot 的android-maps-utils(https://github.com/googlemaps/android-maps-utils)在我的Android应用程序中的Google地图上的BubbleIcons中显示简短信息.

问题是我想将TextView附加到地图上标记的相对位置,以显示其他一些动态的信息(与这个伟大的库生成的Bitmap图片相反); 在我的情况下倒计时.

有谁会知道如何以编程方式执行此操作.

在此先感谢,祝你有个美好的一天!

Vin*_*ran 6

为标记创建客户布局,如下所示

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_marker_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="5"
        android:textSize="12sp"
        android:gravity="center_horizontal"
        android:textColor="@color/white"
        android:background="@drawable/ic_center_pin_green_black"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

给它充气并将其添加为标记图标

View marker = ((LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custome_proximity_pin_green, null);
TextView tv_marker_text = (TextView) marker.findViewById(R.id.tv_marker_text);
tv_marker_text.setText("20");


meterMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(meterModel.getLatitude(),meterModel.getLongitude())).icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(getContext(), marker))));
Run Code Online (Sandbox Code Playgroud)

createDrawableFromView方法是

private Bitmap createDrawableFromView(Context context, View view) {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
    view.layout(0, 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;
}
Run Code Online (Sandbox Code Playgroud)