前一段时间搞地图要显示周围房源信息,之前搜索的都是使用2.x的,现在百度地图官方新出了3.0版本由于之前思维局限一直没有实现图文并茂,今天看了别人2.0的实现方式,把它用到3.0上成功显示,下面看一下效果
现在3.0显示覆盖物mBaiduMap.addOverlay(OverlayOptions arg0),有两个类可以添加MarkerOptions和TextOptions,分别对应图片和文字,但是两个无法合在一起,换一个思路就是我们自定义覆盖物大多数都是自定义布局,但是查看官方文档没有现成的接口,所以我们可以把布局文件view转换成bitmap,然后通过BitmapDescriptorFactory.fromBitmap来获取BitmapDescriptor,这样就可以自定义图文并茂的覆盖物了,下面是如何将View转换成Bitmap的方法:
- <span style="font-size:14px;">/**
- * 从view 得到图片
- * @param view
- * @return
- */
- public static Bitmap getBitmapFromView(View view) {
- view.destroyDrawingCache();
- view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
- View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
- view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
- view.setDrawingCacheEnabled(true);
- Bitmap bitmap = view.getDrawingCache(true);
- return bitmap;
- }</span>
我做的是云检索显示内容,具体的可以查看官方的demo,我这里只写出用到的主要函数的方法:
- <span style="font-size:14px;">@Override
- public void onGetSearchResult(CloudSearchResult result, int error) {
- if (result != null && result.poiList != null
- && result.poiList.size() > 0) {
- mBaiduMap.clear();
- LatLng ll;
- BitmapDescriptor bd;
- LatLngBounds.Builder builder = new Builder();
- for (CloudPoiInfo info : result.poiList) {
- TextView textView = new TextView(UElivesRentsRoom.this);
- textView.setGravity(Gravity.CENTER);
- textView.setBackgroundResource(R.drawable.icon_gcoding);
- textView.setTextColor(getResources().getColor(android.R.color.white));
- ll = new LatLng(info.latitude, info.longitude);
- if (info.title != null) {
- textView.setText(info.title);
- }else {
- textView.setText("未知");
- }
- bd = BitmapDescriptorFactory.fromBitmap(BMapUtil.getBitmapFromView(textView));
- OverlayOptions oo = new MarkerOptions().icon(bd).
- position(ll);
- mBaiduMap.addOverlay(oo);
- builder.include(ll);
- bd.recycle();
- }
- LatLngBounds bounds = builder.build();
- MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(bounds);
- mBaiduMap.animateMapStatus(u);
- }
- }</span>
我上面是使用TextView,如果要显示其他的内容自己可以使用布局文件。
- 顶
- 0