Google地图信息窗口是否可以与标记重叠

时间:2013-12-17 17:44:11

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

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

标记的外观如下:

enter image description here

这就是我想要在信息窗口弹出时的样子:

enter image description here

信息窗口有没有办法像这样重叠标记并隐藏它的一部分? 注意:第二张图片只是设计模型(photoshopped),尚未实现。第一张图片是实际的截图。

1 个答案:

答案 0 :(得分:1)

以下是添加自定义标记图片的代码。

    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));        
        }

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

// 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,当我点击标记时,它会显示我的自定义窗口。