zoukankan      html  css  js  c++  java
  • 百度地图3.0实现图文并茂的覆盖物

     

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

    分类: 地图API开发 android

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

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

    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,我这里只写出用到的主要函数的方法:
    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.                   
    25.                 builder.include(ll);  
    26.                 bd.recycle();  
    27.             }  
    28.             LatLngBounds bounds = builder.build();  
    29.             MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(bounds);  
    30.             mBaiduMap.animateMapStatus(u);  
    31.         }  
    32.     }</span>  

    我上面是使用TextView,如果要显示其他的内容自己可以使用布局文件。
     
    0
  • 相关阅读:
    practice
    C#Hello World
    Merge
    Python学习面向对象编程
    Python学习Python操作数据库
    jmeter压力测试
    Python学习基础常用模块
    Python学习Python操作excel
    Python学习网络编程
    Python学习函数
  • 原文地址:https://www.cnblogs.com/duanweishi/p/4516069.html
Copyright © 2011-2022 走看看