android 百度地图3.0

 

android 百度地图3.0+常用操作



一:为地图设置事件

注意新版本中要有一个getMap

[java]  view plain copy
  1. mMapView.getMap().setOnMapStatusChangeListener(listener);  
[java]  view plain copy
  1. OnMapStatusChangeListener listener = new OnMapStatusChangeListener() {    
  2.             /**  
  3.             * 手势操作地图,设置地图状态等操作导致地图状态开始改变。  
  4.             * @param status 地图状态改变开始时的地图状态  
  5.             */    
  6.             public void onMapStatusChangeStart(MapStatus status){    
  7.             }    
  8.             /**  
  9.             * 地图状态变化中  
  10.             * @param status 当前地图状态  
  11.             */    
  12.             public void onMapStatusChange(MapStatus status){    
  13.             }    
  14.             /**  
  15.             * 地图状态改变结束  
  16.             * @param status 地图状态改变结束后的地图状态  
  17.             */    
  18.             public void onMapStatusChangeFinish(MapStatus status){    
  19.                   
  20.             }   
  21.         };  

二:经纬度转化为屏幕中的坐标

[java]  view plain copy
  1. //LatLng p2 = new LatLng(39.94923, 116.397428);  
  2.                 LatLng p2 = mMarkerA.getPosition();  
  3.                 Point pt =mMapView.getMap().getProjection().toScreenLocation(p2);  
  4.                 System.out.println("转化为屏幕坐标 x:"+pt.x+" y:"+pt.y);  


三:屏幕中坐标转化为经纬度

[java]  view plain copy
  1. LatLng ll = mMapView.getMap().getProjection().fromScreenLocation(pt);  
[java]  view plain copy
  1. LatLng p2 = mMarkerA.getPosition();       
  2.                 Point pt =mMapView.getMap().getProjection().toScreenLocation(p2);  
  3.                 System.out.println("转化为屏幕坐标 x:"+pt.x+" y:"+pt.y);                                 
  4.                 LatLng ll = mMapView.getMap().getProjection().fromScreenLocation(pt);                 
  5.                 System.out.println("转化的经纬度 x:"+ll.latitude+" y:"+ll.longitude);  


四:得到手机屏幕,左上,左下,右上,右下经纬度

可以更具屏幕坐标转经纬度的方法轻松拿到左上,左下,右上,右下经纬度

1:得到屏幕坐标就是宽高

[java]  view plain copy
  1. DisplayMetrics dm = new DisplayMetrics();  
  2.         getWindowManager().getDefaultDisplay().getMetrics(dm);  
  3.         int Max_X=dm.widthPixels;  
  4.         int Max_Y=dm.heightPixels;  
  5.         System.out.println("屏幕宽:"+Max_X+" 高:"+Max_Y);  


2:得到左上角坐标

[java]  view plain copy
  1. Point pt = new Point();  
  2.                 pt.x=0;  
  3.                 pt.y=0;  
  4.                 LatLng ll = mMapView.getMap().getProjection().fromScreenLocation(pt);                 
  5.                 System.out.println("左上角经纬度 x:"+ll.latitude+" y:"+ll.longitude);  


3.得到右下角经纬度

[java]  view plain copy
  1. DisplayMetrics dm = new DisplayMetrics();  
  2.                 getWindowManager().getDefaultDisplay().getMetrics(dm);  
  3.                   
  4.                 Point pty = new Point();  
  5.                 pty.x=dm.widthPixels;  
  6.                 pty.y=dm.heightPixels;  
  7.                 LatLng lly =    mMapView.getMap().getProjection().fromScreenLocation(pty);                
  8.                 System.out.println("右下角经纬度 x:"+lly.latitude+" y:"+lly.longitude);  



五:覆盖物角度旋转

   使用方法rotate即可

[java]  view plain copy
  1. LatLng p2 = new LatLng(39.94923116.397428);  
  2.     OverlayOptions ooA = new MarkerOptions().position(p2).icon(bdA).rotate(-30);  
  3.     mMarkerA = (Marker) (mBaiduMap.addOverlay(ooA));  


六:设置中心的,缩放级别

//初始化地图
    MapView mMapView = (MapView) findViewById(R.id.map);
BaiduMap mBaidumap = mMapView.getMap();
//设定中心点坐标 
        LatLng cenpt = new LatLng(29.806651,121.606983); 
        //定义地图状态
        MapStatus mMapStatus = new MapStatus.Builder()
        .target(cenpt)
        .zoom(18)
        .build();
        //定义MapStatusUpdate对象,以便描述地图状态将要发生的变化
        MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
        //改变地图状态
        mBaidumap.setMapStatus(mMapStatusUpdate);


七:覆盖物弹出层效果

   1:可以使用Dialog使用悬浮弹出层效果

          手机屏幕小一般这种方式更fit

你可能感兴趣的:(android 百度地图3.0)