百度地图3.0实现图文并茂的覆盖物

百度地图3.0实现图文并茂的覆盖物

分类: 地图API开发 android2014-07-03 00:30 2176人阅读 评论(2) 收藏 举报

前一段时间搞地图要显示周围房源信息,之前搜索的都是使用2.x的,现在百度地图官方新出了3.0版本由于之前思维局限一直没有实现图文并茂,今天看了别人2.0的实现方式,把它用到3.0上成功显示,下面看一下效果

现在3.0显示覆盖物mBaiduMap.addOverlay(OverlayOptions arg0),有两个类可以添加MarkerOptions和TextOptions,分别对应图片和文字,但是两个无法合在一起,换一个思路就是我们自定义覆盖物大多数都是自定义布局,但是查看官方文档没有现成的接口,所以我们可以把布局文件view转换成bitmap,然后通过BitmapDescriptorFactory.fromBitmap来获取BitmapDescriptor,这样就可以自定义图文并茂的覆盖物了,下面是如何将View转换成Bitmap的方法:

[java] view plaincopyprint?

  1. <span style="font-size:14px;">/**
  2. * 从view 得到图片
  3. * @param view
  4. * @return
  5. */
  6. public static Bitmap getBitmapFromView(View view) {
  7. view.destroyDrawingCache();
  8. view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
  9. View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
  10. view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
  11. view.setDrawingCacheEnabled(true);
  12. Bitmap bitmap = view.getDrawingCache(true);
  13. return bitmap;
  14. }</span>

我做的是云检索显示内容,具体的可以查看官方的demo,我这里只写出用到的主要函数的方法:

[java] view plaincopyprint?

  1. <span style="font-size:14px;">@Override
  2. public void onGetSearchResult(CloudSearchResult result, int error) {
  3. if (result != null && result.poiList != null
  4. && result.poiList.size() > 0) {
  5. mBaiduMap.clear();
  6. LatLng ll;
  7. BitmapDescriptor bd;
  8. LatLngBounds.Builder builder = new Builder();
  9. for (CloudPoiInfo info : result.poiList) {
  10. TextView textView = new TextView(UElivesRentsRoom.this);
  11. textView.setGravity(Gravity.CENTER);
  12. textView.setBackgroundResource(R.drawable.icon_gcoding);
  13. textView.setTextColor(getResources().getColor(android.R.color.white));
  14. ll = new LatLng(info.latitude, info.longitude);
  15. if (info.title != null) {
  16. textView.setText(info.title);
  17. }else {
  18. textView.setText("未知");
  19. }
  20. bd = BitmapDescriptorFactory.fromBitmap(BMapUtil.getBitmapFromView(textView));
  21. OverlayOptions oo = new MarkerOptions().icon(bd).
  22. position(ll);
  23. mBaiduMap.addOverlay(oo);
  24. builder.include(ll);
  25. bd.recycle();
  26. }
  27. LatLngBounds bounds = builder.build();
  28. MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(bounds);
  29. mBaiduMap.animateMapStatus(u);
  30. }
  31. }</span>

我上面是使用TextView,如果要显示其他的内容自己可以使用布局文件。

0
时间: 2024-12-26 12:59:14

百度地图3.0实现图文并茂的覆盖物的相关文章

百度地图V2.0实践项目开发工具类bmap.util.js V1.4

/** * 百度地图使用工具类-v2.0(大眾版) * * @author boonya * @date 2013-7-7 * @address Chengdu,Sichuan,China * @email [email protected] * @company KWT.Shenzhen.Inc.com * @notice 有些功能需要加入外部JS库才能使用,另外还需要申请地图JS key . * 申请地址:http://developer.baidu.com/map/apply-key.ht

百度地图api2.0体验

前言:这两天在做百度地图的功能,查看了百度官网的api完成了基本功能 api地址http://developer.baidu.com/map/jshome.htm 注意是javascript API 大众版2.0 废话不说先上图 一.导入百度地图api <script type="text/javascript" src="/Scripts/jquery.min.js"></script> <script src="http:

百度地图3.0 隐藏比例尺和缩放按钮的方法

今天做项目的时候用到了百度地图Android SDK v3.0.0,发现用以前的办法无法去掉地图上的比例尺和按钮, 而demo里提供的设置BaiduMapOptions这个对象的方法来去掉地图上的比例尺和按钮, 但只能通过mMapView = new MapView(this, mapOptions);的方式来实例化MapView这个对象, 可是我想把自己定义的xml加进来,通过setContentView(R.layout.myview),然后用老办法mMapView = (MapView)

Android 百度地图 SDK v3_3_0 (四) ---覆盖物

转载请标明出处:http://blog.csdn.net/tanzuai/article/details/43833125 本篇博客要实现的功能 先上效果图: 上面就是我们最终要实现的效果 1.首先我们来介绍下要实现的功能: A.更改坐标的位置 B.更改坐标的图标 C.删除图标 D.坐标每隔一段时间变动一次 clear.覆盖物的清楚 2.下面我们通过实例,一一的解析上面的功能 2.1首先我们初始化要用到的变量 /** * MapView 是地图主控件 */ private MapView mMa

百度地图开发之不同图层及覆盖物

1.了解地图的最基本管理类BaiduMap 方法很简单就是 [java] view plaincopyprint? mapview.getMap(); 然后我们来看一下里面的方法 官方文档这么说来着 void addHeatMap(HeatMap heatmap) 添加热力图 Overlay addOverlay(OverlayOptions options) 向地图添加一个 Overlay void animateMapStatus(MapStatusUpdate update) 以动画方式更

百度地图2.4.1SDK监听覆盖物的点击事件

最近做项目用的是老版本的百度地图SDK,其中有一个需求是监听普通覆盖物的点击事件,由于这个版本不存在所谓的Marker,普通的覆盖物都是自己写一个类继承 ItemizedOverlay<OverlayItem>.监听点击事件更加麻烦,需要覆盖ItemizedOverlay里面的onTap方法,但是有2个onTap方法,应该覆盖参数是一个(int index)的onTap方法,因为另一个只要是点击地图就会调用,无论点击哪里都是这样,这也不知道为什么. protected boolean onTa

【百度地图API】如何给自定义覆盖物添加事件

http://www.cnblogs.com/milkmap/archive/2011/10/20/2219149.html 摘要: 给marker.lable.circle等Overlay添加事件很简单,直接addEventListener即可.那么,自定义覆盖物的事件应该如何添加呢?我们一起来看一看~ ----------------------------------------------------------------------------------------- 一.定义构造

百度地图V5.0地图定位

按照官方api一步一步写下来碰到的问题 mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类 mLocationClient.registerLocationListener( myListener ); //注册监听函数 LocationClientOption option = new LocationClientOption(); option.setLocationMode(L

Android应用之——百度地图最新SDK3.0应用,实现最常用的标注覆盖物以及弹出窗覆盖物

一.概述 最新版的百度地图SDK3.0,修改了很多方法,之前的很多方法被简化了,正好在做地图这一块,顺便就使用了最新版的sdk. 下载官方给的demo,发现变化还是挺大的,之前的一些方法都换了,地图的初始化也进行了调整.多了好几个类,具体用法参考下面的例子,详细的说明可参照官方的说明文档. 二.效果图 标注覆盖物效果图: 弹出窗覆盖物: 三.实现过程 大部分是根据官方给的demo来的. A.配置文件: 第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷