百度地图取点


import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMap.OnMapClickListener;
import com.baidu.mapapi.map.BaiduMap.OnMapStatusChangeListener;
import com.baidu.mapapi.map.BaiduMap.OnMarkerDragListener;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.geocode.GeoCodeResult;
import com.baidu.mapapi.search.geocode.GeoCoder;
import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
import com.baidu.mapapi.search.geocode.ReverseGeoCodeOption;
import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import com.yuanlian.mingong.activity.baseclass.BaseActivityb;
import com.yuanlian.mingong.util.MinGongConfig;
import com.yuanlian.mingong.R;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MapGetGeoActivity extends BaseActivityb implements
        OnGetGeoCoderResultListener {
    public static int GETLATLON = 1001;
    @ViewInject(R.id.mapview)
    MapView mMapView;
    BaiduMap mBaiduMap;
    GeoCoder mSearch = null; // 搜索模块,也可去掉地图模块独立使用
    private double lat;
    private double lon;
    private String address = "";
    boolean isFirst = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_getmap_address);
        ViewUtils.inject(this);
        // getNetStatement();
        init();
    }

    private void init() {
        mBaiduMap = mMapView.getMap();// 获取Map控制
        mMapView.showZoomControls(false);// 隐藏百度自带的缩放按钮
        mMapView.removeViewAt(1);// 移除百度LOGO
        mBaiduMap.animateMapStatus(MapStatusUpdateFactory.zoomTo(14));
        // 开启定位图层
        mBaiduMap.setMyLocationEnabled(true);
        // 定位初始化
        startLoc();
        // 初始化搜索模块,注册事件监听
        mSearch = GeoCoder.newInstance();
        mSearch.setOnGetGeoCodeResultListener(this);
        mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(
                LocationMode.NORMAL, true, null));
        mBaiduMap.setOnMapClickListener(new OnMapClickListener() {

            @Override
            public boolean onMapPoiClick(MapPoi arg0) {
                return false;
            }

            @Override
            public void onMapClick(LatLng arg0) {
                showProgress();
                addMarker(arg0);
                mSearch.reverseGeoCode(new ReverseGeoCodeOption()
                        .location(arg0));
                lon = arg0.longitude;
                lat = arg0.latitude;
            }
        });

        mBaiduMap.setOnMarkerDragListener(new OnMarkerDragListener() {

            @Override
            public void onMarkerDragStart(Marker arg0) {

            }

            @Override
            public void onMarkerDragEnd(Marker arg0) {
                showProgress();
                mSearch.reverseGeoCode(new ReverseGeoCodeOption().location(arg0
                        .getPosition()));
                lon = arg0.getPosition().longitude;
                lat = arg0.getPosition().latitude;
            }

            @Override
            public void onMarkerDrag(Marker arg0) {

            }
        });
    }

    @OnClick({ R.id.getmapaddress_back, R.id.getmapaddress_makesure })
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.getmapaddress_back:
            finishSelf();
            break;
        case R.id.getmapaddress_makesure:
            Intent intent = new Intent();
            intent.putExtra("lat", lat);
            intent.putExtra("lon", lon);
            intent.putExtra("address", address);
            if (MinGongConfig.DEBUG) {
                System.out.println("====mapgetgeo====" + address + lat + ";"
                        + lon);
            }
            setResult(MapGetGeoActivity.GETLATLON, intent);
            finishSelf();
            break;
        }
    }

    private void addMarker(LatLng arg0) {
        mBaiduMap.clear();
        BitmapDescriptor bd = BitmapDescriptorFactory
                .fromResource(R.drawable.marker);
        OverlayOptions oo = new MarkerOptions().position(arg0).icon(bd)
                .draggable(true).zIndex(10);// 创建marker
        mBaiduMap.addOverlay(oo);// 添加marker到mapView
    }

    @Override
    public void onGetGeoCodeResult(GeoCodeResult arg0) {

    }

    @Override
    public void onGetReverseGeoCodeResult(ReverseGeoCodeResult arg0) {
        disMissProgress();
        address = arg0.getAddress();
    }

    // 定位功能
    private void startLoc() {
        mLocClient = new LocationClient(this);
        mLocClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true);// 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(10000);
        option.setIsNeedAddress(true);
        mLocClient.setLocOption(option);
        mLocClient.start();
    }

    public MyLocationListenner myListener = new MyLocationListenner();// 定位图层监听
    static LocationClient mLocClient;

    public class MyLocationListenner implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            // map view 销毁后不在处理新接收的位置
            if (location == null) {
                return;
            } else {
                if (location == null || mMapView == null)
                    return;
                MyLocationData locData = new MyLocationData.Builder()
                        .accuracy(location.getRadius())
                        // 此处设置开发者获取到的方向信息,顺时针0-360
                        .direction(100).latitude(location.getLatitude())
                        .longitude(location.getLongitude()).build();
                mBaiduMap.setMyLocationData(locData);
                lon = location.getLongitude();
                lat = location.getLatitude();

                LatLng ll = new LatLng(location.getLatitude(),
                        location.getLongitude());
                if (isFirst) {
                    MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
                    mBaiduMap.animateMapStatus(u);
                    isFirst = false;
                }
            }
        }

        public void onReceivePoi(BDLocation poiLocation) {
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 退出时销毁定位
        mLocClient.stop();
        // 关闭定位图层
        mMapView.onDestroy();
        mMapView = null;
    }

    @Override
    protected void onPause() {
        mMapView.onPause();
        super.onPause();
    }

    @Override
    protected void onResume() {
        if (!mLocClient.isStarted()) {
            mLocClient.start();
        }
        mMapView.onResume();
        super.onResume();
    }
    /**
     * 地图移动后获取中心点经纬度
     * void
     */
    private void demo(LatLng ll) {
        // 定义地图状态
        MapStatus mMapStatus = new MapStatus.Builder().target(ll).zoom(14)
                .build();
        MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory
                .newMapStatus(mMapStatus);
        // 改变地图状态
        mBaiduMap.setMapStatus(mMapStatusUpdate);
        mBaiduMap.setOnMapStatusChangeListener(new OnMapStatusChangeListener() {

            @Override
            public void onMapStatusChangeStart(MapStatus arg0) {
            }

            @Override
            public void onMapStatusChangeFinish(MapStatus arg0) {
                LatLng latlng = mBaiduMap.getMapStatus().target;
                lat = latlng.latitude;
                lon  = latlng.longitude;
                mSearch.reverseGeoCode(new ReverseGeoCodeOption()
                .location(latlng));
            }

            @Override
            public void onMapStatusChange(MapStatus arg0) {
            }
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值