给Android开发开拓封装百度地图/等SDK的思想与参考源代码
本帖最后由 破天丿彡 于 2019-3-14 17:29 编辑免得看糊涂,先来结构图
对你有用的话请给波热心值
使用的截图
/**
* 创建日期:2019-03-05
* 创建人:zc
* 此页面描述:使用百度地图的基础activity
*/
public abstract class BaseBaiDuMapActivity extends BaseActivity {
private MapView mMapView = null;
public BaiduMap mBaiduMap;
@Override
protected void onCreate(@nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentViewLayout());
//初始化百度地图
mMapView = findViewById(getBaiduMap());
//设置是否显示缩放控件
mMapView.showZoomControls(true);
//获取地图控制器
mBaiduMap = mMapView.getMap();
//初始化百度地图设置
mBaiduMap = BaiduMapUtil.iniBaiDuMao(mBaiduMap);
}
protected abstract int getContentViewLayout();
//百度地图控件的id
protected abstract int getBaiduMap();
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
/**
* 创建日期:2019-03-05
* 创建人:zc
* 此页面描述:在地图上叠加覆盖物/要在上添加自己的业务用此类
*/
public class OverlayOptionsUtil {
//设置经纬度
public static LatLnggetCarLatLng(){
returnnew LatLng(116.401394,39.915156);
}
//定义地图中心点
public static OverlayOptions setMaker(){
//设置经纬度
//构建Marker图标
BitmapDescriptor bitmap ;
//设置在地图上显示的图标
if(type==0){
bitmap =BitmapDescriptorFactory.fromResource(R.mipmap.ico_gray);
}else{
bitmap =BitmapDescriptorFactory.fromResource(R.mipmap.ico_boy);
}
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(getCarLatLng()) //必传参数
.icon(bitmap) //必传参数
.draggable(true);
returnoption;
}
**
* 创建日期:2019-03-05
* 创建人:zc
* 此页面描述:百度地图控制器
*/
public class BaiduMapUtil {
/**
* 百度地图设置
* @Param mBaiduMap
* @return
*/
public staticBaiduMap iniBaiDuMao(BaiduMap mBaiduMap){
//设置地图类型
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
//设置是否允许定位地图
mBaiduMap.setMyLocationEnabled(true);
//设置是否打开交通地图
mBaiduMap.setTrafficEnabled(true);
// 设置是否显示室内图, 默认室内图不显示 室内图只有在缩放级别范围才生效,但是在18级之上(包含18级)才会有楼层边条显示。
mBaiduMap.setIndoorEnable(true);
//设置地图中心点
mBaiduMap.addOverlay(
OverlayOptionsUtil.setMaker());
//设置地图缩放比例
float f = mBaiduMap.getMaxZoomLevel();//19.0 最小比例尺
MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom( 8);//设置缩放比例
mBaiduMap.animateMapStatus(u);
returnmBaiduMap;
}
来个使用的实例代码
public class TestBaiduActivity extends BaseBaiDuMapActivity {
private int radius;
private double yuan_lat=0,yuan_lon=0;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
}
@Override
protected int getContentViewLayout() {
return R.layout.activity_baidu_map;
}
private void getMap( int radius) {
mBaiduMap.clear();//清除地图上的覆盖物
//添加所在位置
mBaiduMap.addOverlay(OverlayOptionsUtil.setMaker());
//在地图范围添加一个圆圈,传入圆心点的坐标point,填充的颜色,半径(米),还可以设置边框等等
CircleOptions circle = new CircleOptions().center(OverlayOptionsUtil.getCarLatLng()).fillColor(0x8000c3ff).radius(radius);
//添加地图范围
mBaiduMap.addOverlay(circle);
} 很好 nb啊印度阿三 牛逼。我是被@进来的。protected void onCreate(@nullable Bundle savedInstanceState) { 正在学习android,收藏备用,谢谢! 弄个成品
出来 我是初次学习android看你的代码非常晕,有没有完整工程文件 好好学习一下
页:
[1]