请选择 进入手机版 | 继续访问电脑版

[Android] 给Android开发开拓封装百度地图/等SDK的思想与参考源代码

编程语言 编程语言 1905 人阅读 | 0 人回复

发表于 2020-10-10 09:09:00 | 显示全部楼层 |阅读模式

c7c2833f48bfcde71468e7349d3d623.png


  1. /**
  2. * 创建日期:2019-03-05
  3. * 创建人:zc
  4. * 此页面描述:使用百度地图的基础activity
  5. */

  6. public abstract class BaseBaiDuMapActivity extends BaseActivity {
  7.     private MapView mMapView = null;
  8.     public BaiduMap mBaiduMap;

  9.     @Override
  10.     protected void onCreate([url=home.php?mod=space&uid=1043391]@nullable[/url] Bundle savedInstanceState) {
  11.         super.onCreate(savedInstanceState);

  12.         setContentView(getContentViewLayout());
  13.         //初始化百度地图
  14.         mMapView = findViewById(getBaiduMap());
  15.         //  设置是否显示缩放控件
  16.         mMapView.showZoomControls(true);

  17.         //获取地图控制器
  18.         mBaiduMap = mMapView.getMap();
  19.         //初始化百度地图设置
  20.         mBaiduMap = BaiduMapUtil.iniBaiDuMao(mBaiduMap);

  21.     }
  22.     protected abstract int getContentViewLayout();
  23.     //百度地图控件的id
  24.     protected abstract int getBaiduMap();

  25.     @Override
  26.     protected void onResume() {
  27.         super.onResume();
  28.         //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
  29.         mMapView.onResume();
  30.     }

  31.     @Override
  32.     protected void onPause() {
  33.         super.onPause();
  34.         //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
  35.         mMapView.onPause();
  36.     }

  37.     @Override
  38.     protected void onDestroy() {
  39.         super.onDestroy();
  40.         //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
  41.         mMapView.onDestroy();
  42.     }
复制代码
  1. /**
  2. * 创建日期:2019-03-05
  3. * 创建人:zc
  4. * 此页面描述:在地图上叠加覆盖物/要在上添加自己的业务用此类
  5. */
  6. public class OverlayOptionsUtil {
  7.     //设置经纬度
  8.     public static LatLng  getCarLatLng(){
  9.         return  new LatLng([font=Microsoft YaHei][color=#000000][size=13.3333px]116.401394,39.915156[/size][/color][/font]);
  10.     }
  11.     //定义地图中心点
  12.     public static OverlayOptions setMaker(){
  13.         //设置经纬度
  14.         //构建Marker图标
  15.         BitmapDescriptor bitmap ;
  16.         //设置在地图上显示的图标
  17.         if(type==0){
  18.             bitmap =  BitmapDescriptorFactory.fromResource(R.mipmap.ico_gray);
  19.         }else{
  20.             bitmap =  BitmapDescriptorFactory.fromResource(R.mipmap.ico_boy);
  21.         }

  22.         //构建MarkerOption,用于在地图上添加Marker
  23.         OverlayOptions option = new MarkerOptions()
  24.                 .position(getCarLatLng()) //必传参数
  25.                 .icon(bitmap) //必传参数
  26.                 .draggable(true);
  27.         return  option;
  28.     }
复制代码
  1. **
  2. * 创建日期:2019-03-05
  3. * 创建人:zc
  4. * 此页面描述:百度地图控制器
  5. */
  6. public class BaiduMapUtil {
  7.     /**
  8.      * 百度地图设置
  9.      * [url=home.php?mod=space&uid=952169]@Param[/url] mBaiduMap
  10.      * @return
  11.      */
  12.     public static  BaiduMap iniBaiDuMao(BaiduMap mBaiduMap){
  13.         //设置地图类型
  14.         mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
  15.         //设置是否允许定位地图
  16.         mBaiduMap.setMyLocationEnabled(true);
  17.         //设置是否打开交通地图
  18.         mBaiduMap.setTrafficEnabled(true);
  19.         // 设置是否显示室内图, 默认室内图不显示 室内图只有在缩放级别[17, 22]范围才生效,但是在18级之上(包含18级)才会有楼层边条显示。
  20.         mBaiduMap.setIndoorEnable(true);

  21.         //设置地图中心点
  22.         mBaiduMap.addOverlay(
  23.                 OverlayOptionsUtil.setMaker());
  24.         //设置地图缩放比例
  25.         float f = mBaiduMap.getMaxZoomLevel();//19.0 最小比例尺

  26.         MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom( 8);//设置缩放比例
  27.         mBaiduMap.animateMapStatus(u);
  28.         return  mBaiduMap;

  29.     }
复制代码
  1. public class TestBaiduActivity extends BaseBaiDuMapActivity {
  2.     private int radius;
  3.     private double yuan_lat=0,yuan_lon=0;

  4.     @Override
  5.     protected void onCreate(@Nullable Bundle savedInstanceState) {
  6.         super.onCreate(savedInstanceState);
  7.         initView();
  8.     }

  9.     @Override
  10.     protected int getContentViewLayout() {
  11.         return R.layout.activity_baidu_map;
  12.     }
  13.   
  14.     private void getMap( int radius) {
  15.         mBaiduMap.clear();//清除地图上的覆盖物
  16.         //添加所在位置
  17.         mBaiduMap.addOverlay(OverlayOptionsUtil.setMaker());
  18.         //在地图范围添加一个圆圈,传入圆心点的坐标point,填充的颜色,半径(米),还可以设置边框等等
  19.         CircleOptions circle = new CircleOptions().center(OverlayOptionsUtil.getCarLatLng()).fillColor(0x8000c3ff).radius(radius);
  20.         //添加地图范围
  21.         mBaiduMap.addOverlay(circle);

  22.     }
复制代码


点评回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则