gpt4 book ai didi

android - 为适用于 Android 的 Google map 标记使用 xml 布局

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:43 26 4
gpt4 key购买 nike

我想为我的 marker 使用布局而不是可绘制对象,我将 Google Maps Api 2 用于 Android 应用程序。

像这样:

  Marker m = googleMap
.addMarker(new MarkerOptions()
.position(LOC)
.snippet(user)
.title(name)
.icon(BitmapDescriptorFactory.fromResource(R.layout.map_marker)));

但是,这似乎只设计用于 drawable 文件夹。

我只需要一个带有背景的图像,我可以根据标记类型更改颜色。这是我要使用的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#222"
android:id="@+id/llMarker">

<ImageView
android:id="@+id/ivMarker"
android:layout_marginTop="5dp"
android:layout_width="40dp"
android:layout_height="40dp" />

</LinearLayout>

非常基础。我如何将其用作标记? (或者至少复制我想要的最终结果?)

文档说你可以使用这个:

fromResource (int resourceId)

所以我假设布局可能有效。

更新:

我从下面的答案中提取了概念并重新设计了一些东西;这仍然不起作用;没有错误。只是不会显示图像。

        LayoutInflater inflater = (LayoutInflater) getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.map_marker, null);

m = googleMap
.addMarker(new MarkerOptions()
.position(LOC)
.snippet(user)
.title(name)
.icon(BitmapDescriptorFactory.fromBitmap(loadBitmapFromView(v))));

//方法

  public static Bitmap loadBitmapFromView(View v) {

if (v.getMeasuredHeight() <= 0) {
v.measure(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
v.draw(c);
return b;
}
return null;
}

最佳答案

您不能直接使用 BitmapDescriptorFactory.fromResource() 的布局:

Creates a BitmapDescriptor using the resource id of an image.

但是,您可以将布局绘制到位图中,然后使用它。你需要:

  • 从 xml 扩展布局(使用 LayoutInflater)。
  • 更改您想要的任何属性(例如背景颜色)。
  • 通过 Canvas 将此布局渲染到 Bitmap 中,例如 here 中所述.
  • 将这个位图传递给BitmapDescriptorFactory.fromBitmap() .

关于android - 为适用于 Android 的 Google map 标记使用 xml 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24716987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com