本帖最后由 破天丿彡 于 2019-3-14 17:29 编辑
免得看糊涂,先来结构图
对你有用的话请给波热心值
TIM截图20190314115720.png (195.16 KB, 下载次数: 1)
2019-3-14 16:16 上传
使用的截图
[Java] 纯文本查看 复制代码/**
* 创建日期:2019-03-05
* 创建人:zc
* 此页面描述:使用百度地图的基础activity
*/
public abstract class BaseBaiDuMapActivity extends BaseActivity {
private MapView mMapView = null;
public BaiduMap mBaiduMap;
@Override
protected void onCreate([url=home.php?mod=space&uid=1043391]@nullable[/url] 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();
}
[Java] 纯文本查看 复制代码/**
* 创建日期:2019-03-05
* 创建人:zc
* 此页面描述:在地图上叠加覆盖物/要在上添加自己的业务用此类
*/
public class OverlayOptionsUtil {
//设置经纬度
public static LatLng getCarLatLng(){
return new LatLng([font=Microsoft YaHei][color=#000000][size=13.3333px]116.401394,39.915156[/size][/color][/font]);
}
//定义地图中心点
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);
return option;
}
[Java] 纯文本查看 复制代码**
* 创建日期:2019-03-05
* 创建人:zc
* 此页面描述:百度地图控制器
*/
public class BaiduMapUtil {
/**
* 百度地图设置
* [url=home.php?mod=space&uid=952169]@Param[/url] mBaiduMap
* @return
*/
public static BaiduMap iniBaiDuMao(BaiduMap mBaiduMap){
//设置地图类型
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
//设置是否允许定位地图
mBaiduMap.setMyLocationEnabled(true);
//设置是否打开交通地图
mBaiduMap.setTrafficEnabled(true);
// 设置是否显示室内图, 默认室内图不显示 室内图只有在缩放级别[17, 22]范围才生效,但是在18级之上(包含18级)才会有楼层边条显示。
mBaiduMap.setIndoorEnable(true);
//设置地图中心点
mBaiduMap.addOverlay(
OverlayOptionsUtil.setMaker());
//设置地图缩放比例
float f = mBaiduMap.getMaxZoomLevel();//19.0 最小比例尺
MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom( 8);//设置缩放比例
mBaiduMap.animateMapStatus(u);
return mBaiduMap;
}
来个使用的实例代码
[Java] 纯文本查看 复制代码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);
}