如何同时在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后输出:
参考文献(没有什么是原创的(笑脸和演示代码除外)):
- 渲染视图/位图
- createDrawableFromView