如何同时在Google地图中显示所有标记标签?

我正在编写一个代码,用于在标记上显示我的所有朋友。 这是我在地图上添加标记的代码。 我想同时显示所有标记标题。 在下面的示例图片中,我可以看到每个CCD商店的标题同时显示。

在此处输入图像描述

GoogleMap mMap = // map initialized here mMap.addMarker(new MarkerOptions() .position(new LatLng(lat, lng)) .title("My Nearby Friend") .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_profile))); 

谁能告诉我如何实现这一目标?

我们需要的是将标记图标从可自定义的布局开始,其中包括可绘制的(图标)和文本,如图所示。

请注意,标记仍然表现得像一个标记 – 点击时有一个标题/信息窗口 – 因此在设计布局时需要考虑到这一点。 因此,如果标题只是复制文本,则不要设置标题。

test_marker_icon.xml:

       

并且渲染它的代码 – 在这个例子中,两个标记添加了相同的图标,每个标记都有唯一的文本:

  MarkerOptions mo = new MarkerOptions(); mo.position(new LatLng(latLng.latitude+5, latLng.longitude-.2)); LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflater.inflate(R.layout.test_marker_icon, null, false); ImageView iv = (ImageView) v.findViewById(R.id.testiconimage); iv.setImageDrawable(getResources().getDrawable(R.drawable.face)); TextView tv = (TextView) v.findViewById(R.id.marker_text1); tv.setText("Marker 1"); tv = (TextView) v.findViewById(R.id.marker_text2); tv.setText("A really nice place"); Marker m = mMap.addMarker(mo); m.setIcon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(MapsActivity.this, v))); MarkerOptions mo2 = new MarkerOptions(); mo2.position(new LatLng(latLng.latitude+4.8, latLng.longitude-.2)); tv = (TextView) v.findViewById(R.id.marker_text1); tv.setText("Marker 2"); tv = (TextView) v.findViewById(R.id.marker_text2); tv.setText("Not quite as nice as (1)"); m = mMap.addMarker(mo2); m.setIcon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(MapsActivity.this, v))); 

以及创建位图的支持方法:

 // Convert a view to bitmap public Bitmap createDrawableFromView(Context context, View view) { DisplayMetrics displayMetrics = new DisplayMetrics(); MapsActivity.this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.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; } 

和样本输出:

在此处输入图像描述

单击标记2后输出:

在此处输入图像描述

参考文献(没有什么是原创的(笑脸和演示代码除外)):

  1. 渲染视图/位图
  2. createDrawableFromView