注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

细节决定成败,决定做了,就全力以赴

 
 
 

日志

 
 

覆盖物---百度地图  

2016-05-16 20:18:11|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在地图上添加覆盖物,一般需要以下几个步骤:

    1. 定义坐标点,有可能是一个,有可能是多个(比如:多边形覆盖物)。

    2. 构造OverlayOptions(地图覆盖物选型基类)。

    3. 在地图上添加覆盖物。

    4. 添加相应的监听事件。


=========================================================
private MapView mMapView = (MapView) findViewById(R.id.bmapview);
Double longitude = 121.510851;
Double latitude = 31.243838;
//--------------标注覆盖物---------------------------------------
// 定义marker坐标点
LatLng point = new LatLng(latitude,longitude);


BitmapDescriptor bitmap = BitmapDescriptorFactory
        .fromResource(R.drawable.ic_launcher);
// 构建markerOption,用于在地图上添加marker
OverlayOptions options = new MarkerOptions()//
        .position(point)// 设置marker的位置
        .icon(bitmap)// 设置marker的图标
        .zIndex(9)// 設置marker的所在層級
        .draggable(true);// 设置手势拖拽
// 在地图上添加marker,并显示
Overlay marker1 = bdMap.addOverlay(options);

//------------多边形覆盖物---------------------------------------

LatLng pt1 = new LatLng(latitude + 0.02, longitude);
LatLng pt2 = new LatLng(latitude, longitude - 0.03);
LatLng pt3 = new LatLng(latitude - 0.02, longitude - 0.01);
LatLng pt4 = new LatLng(latitude - 0.02, longitude + 0.01);
LatLng pt5 = new LatLng(latitude, longitude + 0.03);
List<LatLng> points = new ArrayList<LatLng>();
points.add(pt1);
points.add(pt2);
points.add(pt3);
points.add(pt4);
points.add(pt5);
//
PolygonOptions polygonOptions = new PolygonOptions();
polygonOptions.points(points);
polygonOptions.fillColor(0xAAFFFF00);
polygonOptions.stroke(new Stroke(2, 0xAA00FF00));
Overlay polygon = bdMap.addOverlay(polygonOptions);
//------------------------------------------------------

//-------------文本覆盖物---------------------------------------
LatLng latLng = new LatLng(latitude, longitude);
TextOptions textOptions = new TextOptions();
textOptions.bgColor(0xAAFFFF00)  //設置文字覆蓋物背景顏色
        .fontSize(28)  //设置字体大小
        .fontColor(0xFFFF00FF)// 设置字体颜色
        .text("我在这里啊!!!!")  //文字内容
        .rotate(-30)  //设置文字的旋转角度
        .position(latLng);// 设置位置
bdMap.addOverlay(textOptions);
//-----------------------------------------------
//------------------地形图图层覆盖物----------------------------
LatLng southwest = new LatLng(latitude - 0.01, longitude - 0.012);//西南
LatLng northeast = new LatLng(latitude + 0.01, longitude + 0.012);//东北
LatLngBounds bounds = new LatLngBounds.Builder().include(southwest)
        .include(northeast).build();//得到一个地理范围对象
BitmapDescriptor bitmap2 = BitmapDescriptorFactory
        .fromResource(R.drawable.tt);
GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions();
groundOverlayOptions.image(bitmap2);//显示的图片
groundOverlayOptions.positionFromBounds(bounds);//显示的位置
groundOverlayOptions.transparency(0.7f);//显示的透明度
bdMap.addOverlay(groundOverlayOptions);
//------------------折线覆盖物---------------------------------
  //绘制折线图层
        LatLng latlng1 = new LatLng(31.026266,121.456825);
        LatLng latlng2 = new LatLng(31.068866,121.456325);
        LatLng latlng3 = new LatLng(31.028236,121.456925);
        LatLng latlng4 = new LatLng(31.128366,121.456875);

        ArrayList<LatLng> latLngPolygon = new ArrayList<LatLng>();
        latLngPolygon.add(latlng1);
        latLngPolygon.add(latlng2);
        latLngPolygon.add(latlng3);
        latLngPolygon.add(latlng4);

        PolylineOptions po = new PolylineOptions().color(getResources().getColor(android.R.color.holo_red_light)).points(latLngPolygon);
        bdMap.addOverlay(po);
//------------------圆点覆盖物-------------------------------------
DotOptions dotOptions = new DotOptions();
dotOptions.center(new LatLng(latitude, longitude));//设置圆心坐标
dotOptions.color(0XFFfaa755);//颜色
dotOptions.radius(25);//设置半径
bdMap.addOverlay(dotOptions);
//--------------------圆形(空心)覆盖物----------------------------------------
CircleOptions circleOptionsObj = new CircleOptions();
circleOptionsObj.center(new LatLng(latitude, longitude));//设置圆心坐标
circleOptionsObj.fillColor(0XFFfaa755);//圆的填充颜色
circleOptionsObj.radius(150);//设置半径
circleOptionsObj.stroke(new Stroke(5, 0xAA00FF00));//设置边框
bdMap.addOverlay(circleOptionsObj);
//-----------------弹出窗覆盖物---------------------------------------------------------
displayInfoWindow(new LatLng(latitude, longitude));
=====================================================
/**
 * 显示弹出窗口覆盖物
 */
private void displayInfoWindow(final LatLng latLng) {
    // 创建infowindow展示的view
    Button btn = new Button(getApplicationContext());
    btn.setBackgroundResource(R.drawable.tt);
    btn.setText("点我点我~");
    BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory
            .fromView(btn);
    // infowindow点击事件
    InfoWindow.OnInfoWindowClickListener infoWindowClickListener = new InfoWindow.OnInfoWindowClickListener() {
        @Override
        public void onInfoWindowClick() {
            //reverseGeoCode(latLng);
            //隐藏InfoWindow
            bdMap.hideInfoWindow();
        }
    };
    // 创建infowindow
    InfoWindow infoWindow = new InfoWindow(bitmapDescriptor, latLng, -47,
            infoWindowClickListener);

    // 显示InfoWindow
    bdMap.showInfoWindow(infoWindow);
}
==============================================================================
原文:http://blog.csdn.net/crazy1235/article/details/43377545
  评论这张
 
阅读(86)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017