java - Google map 信息窗口是否可以与标记重叠

标签 java android xml google-maps google-maps-android-api-2

我已经研究如何做到这一点很长一段时间了,但我找不到单一的解决方案,似乎以前没有人尝试过这一点。我正在尝试执行以下操作:

这是标记的样子:

enter image description here

这就是我希望弹出信息窗口时的样子:

enter image description here

有没有办法让信息窗口像这样重叠标记并隐藏其中的一部分? 注意:第二张图片只是设计模型(经过Photoshop处理),尚未实现。第一张图片是实际的屏幕截图。

最佳答案

这是添加自定义标记图像的代码。

    LayoutInflater inflater = (LayoutInflater) getApplicationContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    marker=inflater.inflate(R.layout.custom_marker_layout,null, false);

     numTxt = (TextView) marker.findViewById(R.id.num_txt);

        for(int i=0;i<locations.size();i++){

            numTxt.setText(count.get(i).toString());

            numTxt.setTextColor(Color.GREEN);

            if(Integer.parseInt(count.get(i).toString())<=5){
                numTxt.setTextColor(Color.RED);
            }

            String title=locations.get(i).toString()+"count"+count.get(i);

            Currnt=mMap.addMarker(new MarkerOptions()
            .icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(BasicMapActivity2.this, marker))).
            position(new LatLng(Double.parseDouble(latitudes.get(i).toString()), Double.parseDouble(longitudes.get(i).toString())))
            .title(title)
            .snippet(address.get(i)));
            markers.add(Currnt);
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(Double.parseDouble(latitudes.get(i).toString()), Double.parseDouble(longitudes.get(i).toString())), 12.0f));        
        }

以及在谷歌地图中将 View 转换为位图的方法。

// Convert a view to bitmap
    public static Bitmap createDrawableFromView(Context context, View view) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((BasicMapActivity2)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

        view.setLayoutParams(new LayoutParams(200,65));
        view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
        view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
        view.buildDrawingCache();
        view.buildDrawingCache(true);

        Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(bitmap);

        view.draw(canvas);

        return bitmap;
    }

和 Custom_marker_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal" >

<ImageView
    android:id="@+id/img"
    android:layout_width="55dp"
    android:layout_height="65dp"
    android:src="@drawable/custom_marker" />

<TextView
    android:id="@+id/num_txt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="9"
    android:textColor="#008000"
    android:textSize="18dp"
    android:textStyle="bold" />

</FrameLayout>

在此实现中,我显示自定义图像,并在该图像中显示一个带有计数值的 TextView ,当我单击标记时,它会显示我的自定义窗口。

关于java - Google map 信息窗口是否可以与标记重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641137/

相关文章:

java - java中提取在某个字符串之前结束的子字符串

xml - 更正 Google 多语言站点地图/xhtml 的 XSLT 语法 :link

java - 以XML格式将特殊字符从java传递到jsp

.net - C# 中是否有 Sizzle/jQuery 选择器实现?

java - 如何使用 Spring Boot 从 cassandra 检索空集

java - Jsoup.parse() 与 Jsoup.parse() - 或者 URL 检测在 Jsoup 中是如何工作的?

java - 如何在android中获取蓝牙耳机设备的信息(特别是耳机设备名称)

android - OpenGL ES 2.0 渲染不正确

java - 融合位置提供商 : Is there a way to check if a location update failed?

android - 如果在 Play 商店取消应用购买,用户评分会被删除吗