Android地图添加标记和文字【代码片段】

Android百度地图SDK版本:5.2
1.创建并在项目中配置好AK;
2.Application中初始化地图组件:SDKInitializer.initialize(mContext);
3.自己页面中使用如下:

<span style="font-family:Microsoft YaHei;">/**
 * 考勤详细页
 * Created by WnsnailYang on 2014/7/7.
 */
@EActivity(R.layout.activity_attendance_detail)
public class AttendanceDetailActivity extends BaseActivity {

    @Extra("attendanceInfoModel")
    AttendanceInfoModel attendanceInfoModel;
    @ViewById(R.id.header_layout)
    BaseHeadBar header_layout;//头部标题
    @ViewById(R.id.map_layout)
    RelativeLayout mapView_layout;
    @ViewById(R.id.tv_no_loc)
    TextView tv_no_loc;
    @ViewById(R.id.attendance_detail_grid_photo)
    NoScrollGridView photoGrid;//相片缩略图GridView
    @ViewById(R.id.attendance_detail_tv_type)
    TextView tv_type;
    @ViewById(R.id.attendance_detail_tv_time)
    TextView tv_time; //定位
    @ViewById(R.id.bmapView)
    MapView mMapView;

    //地图
    private BaiduMap mBaiduMap;
    private LatLng mLatLng;
    private BitmapDescriptor mBitmapDescriptor;
    //图片
    private ArrayList<PhotoInfoModel> photosList = new ArrayList<PhotoInfoModel>();//照片URL集合
    private PhotoGridAdapter photoGridAdapter;//相片GridView适配器

    @AfterViews
    void init() {
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        header_layout.setMidTitle(getString(R.string.attendance_detail)); //设置标题
        tv_type.setText(attendanceInfoModel.placeName);
        tv_time.setText(attendanceInfoModel.updateTime);
        initPhoto();
        initMap();
    }

    private void initPhoto() {
        photosList = attendanceInfoModel.picList;
        if (BaseUtils.listIsNullOrEmpty(photosList)) {
            return;
        }
        //设置图片浏览
        photoGridAdapter = new PhotoGridAdapter(this);
        photoGridAdapter.setPhotosList(photosList);
        photoGridAdapter.setDisplayDelImage(false);
        photoGrid.setAdapter(photoGridAdapter);
        photoGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                AppUtils.imageBrower(AttendanceDetailActivity.this, position, photosList);
            }
        });
        photoGridAdapter.notifyDataSetChanged();
    }


    /**
     * 初始化地图设置,添加标注信息
     */
    private void initMap() {
        mBaiduMap = mMapView.getMap();
        mLatLng = getLatLng();
        if (mLatLng == null) {
            tv_no_loc.setVisibility(View.VISIBLE);
            mMapView.setVisibility(View.GONE);
            return;
        }
        setCenterMap();//首先设置中心点
        addOverlay();//添加标注
        addInfoWindow();//添加覆盖文字
    }

    /**
     * 添加覆盖文字
     */
    private void addInfoWindow() {
        View view = getLayoutInflater().inflate(R.layout.map_popview_child, null);
        TextView textView = (TextView) view.findViewById(R.id.titlename);
        textView.setText(attendanceInfoModel.address);
        InfoWindow.OnInfoWindowClickListener listener = new InfoWindow.OnInfoWindowClickListener() {

            @Override
            public void onInfoWindowClick() {
                mBaiduMap.hideInfoWindow();
            }
        };

        // 创建InfoWindow
        InfoWindow mInfoWindow = new InfoWindow(view, mLatLng, 0);
        // 显示InfoWindow
        mBaiduMap.showInfoWindow(mInfoWindow);
    }

    /**
     * 添加标注
     */
    private void addOverlay() {
        //这里以后可以做成动画效果
//        ArrayList<BitmapDescriptor> giflist = new ArrayList<BitmapDescriptor>();
//        giflist.add(BitmapDescriptorFactory.fromResource(R.drawable.ico_location_black));
//        giflist.add(BitmapDescriptorFactory.fromResource(R.drawable.ico_location_arrow));
        mBitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.ico_location_arrow);
        OverlayOptions options = new MarkerOptions().position(mLatLng).icon(mBitmapDescriptor).zIndex(1).draggable(true);//设置:坐标-图标-z轴索引-可拖拽
        mBaiduMap.addOverlay(options);
    }

    /**
     * 设置中心点
     */
    private void setCenterMap() {
        //定义地图状态
        MapStatus mMapStatus = new MapStatus.Builder().target(mLatLng).zoom(18).build();
        //定义MapStatusUpdate对象,以便描述地图状态将要发生的变化
        MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
        //改变地图状态
        mBaiduMap.setMapStatus(mMapStatusUpdate);
    }

    private LatLng getLatLng() {
        double logitude = 113.15;
        double latitude = 23.06;
        //定义文字所显示的坐标点
        if (!TextUtils.isEmpty(attendanceInfoModel.longitude)) {
            logitude = Double.parseDouble(attendanceInfoModel.longitude);
        } else {
            return null;
        }
        if (!TextUtils.isEmpty(attendanceInfoModel.latitude)) {
            latitude = Double.parseDouble(attendanceInfoModel.latitude);
        } else {
            return null;
        }
        return new LatLng(latitude, logitude);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }

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

    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
    }
}
</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值