天天看点

android 百度定位

根据GPS 定位;

package com.bawei.kuaidi.fragment.bangwosong;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.poi.PoiSearch;
import com.bawei.kuaidi.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment_mai extends Fragment {

    MapView mMapView;
    private boolean isFirstIn = true;
    private BaiduMap mbaiduMap;
    public LocationClient mLocationClient = null;
    public BDLocationListener myListener = new MyLocationListent();
    PoiSearch mPoiSearch;

    private double lat;
    private double lng;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v=View.inflate(getActivity(), R.layout.fr_home_mang, null);

        mMapView = (MapView) v.findViewById(R.id.bmapView);
        mbaiduMap = mMapView.getMap();
        MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo((float) );
        mbaiduMap.setMapStatus(msu);

        //设置定位的属性
        mbaiduMap.setMyLocationEnabled(true);
         mLocationClient = new LocationClient(getActivity());     //声明LocationClient类
            mLocationClient.registerLocationListener( myListener );    //注册监听函数
        mLocationClient.registerLocationListener(myListener);


        initLocation();

        return v;
    }

    private void initLocation(){
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationMode.Hight_Accuracy
);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
        int span=;
        option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
        option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
        option.setOpenGps(true);//可选,默认false,设置是否使用gps
        option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
        option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
        option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死  
        option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
        mLocationClient.setLocOption(option);
    }



    @Override
    public void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
    }

    @Override
    public void onResume() {
        super.onResume();
        mMapView.onResume();
    }

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

    @Override
    public void onStart() {
        super.onStart();
         mbaiduMap.setMyLocationEnabled(true);
           mLocationClient.start();
    }

    @Override
    public void onStop() {
        super.onStop();
         mbaiduMap.setMyLocationEnabled(false);
         mLocationClient.stop();

    }




    class MyLocationListent implements BDLocationListener {
        @Override
        public void onReceiveLocation(BDLocation arg0) {

            lat=arg0.getLatitude();
            lng=arg0.getLongitude();
            MyLocationData data = new MyLocationData.Builder()
                    .accuracy(arg0.getRadius()).latitude(lat)
                    .longitude(lng).build();
            mbaiduMap.setMyLocationData(data);
            if (isFirstIn) {
                LatLng latlng = new LatLng(arg0.getLatitude(),
                        arg0.getLongitude());
                MapStatusUpdate mus = MapStatusUpdateFactory.newLatLng(latlng);
                mbaiduMap.animateMapStatus(mus);
                isFirstIn = false;
            }
        }

    }


}