Android 百度地图定位 代码

来源:互联网 发布:四川 网络作家协会 编辑:程序博客网 时间:2024/06/10 15:40
package com.ry.mybaidumapdemo;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;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 android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity  {    public  MapView bmapView = null;    public BaiduMap baiduMap = null;    //定位的相关声明    public LocationClient LocationClient = null;    //自定义图标    BitmapDescriptor mCurrentMark = null;    boolean isFirstLoc = true; //是否是首次定位    public BDLocationListener myListener = new BDLocationListener() {        @Override        public void onReceiveLocation(BDLocation location) {            //MapView 销毁后不再处理 接收新的位置            if(location==null||bmapView==null) {                return;            }            MyLocationData locData = new MyLocationData.Builder().accuracy                    (location.getRadius()).direction(100).latitude(location.getLatitude())                    .longitude(location.getLongitude()).build();            //设置定位数据            baiduMap.setMyLocationData(locData);            if(isFirstLoc) { //第一次定位                isFirstLoc=!isFirstLoc; //改变值  如果是false 则进不来了                LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());                MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);   //设置地图中心点以及 缩放级别                baiduMap.animateMapStatus(u);            }        }        @Override        public void onConnectHotSpotMessage(String arg0, int arg1) {            // TODO Auto-generated method stub        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext()); //初使化context信息        setContentView(R.layout.activity_main);        bmapView = (MapView) findViewById(R.id.bmapView);        bmapView.showZoomControls(true); //设置是否显示缩放控件        baiduMap=bmapView.getMap();        //开启定位图层        baiduMap.setMyLocationEnabled(true);        LocationClient = new LocationClient(getApplicationContext());//实例化 LocationClient类        LocationClient.registerLocationListener(myListener);//注册监听函数        //设置定位参数        this.setLocationOption();        LocationClient.start(); //开启定位    }    /**     * 设置定位参数     */    private void setLocationOption() {        LocationClientOption option = new LocationClientOption();        option.setOpenGps(true); //打开Gps        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置成定位模式        option.setCoorType("bd09ll"); //返回的结果 是百度的经纬度,默认值 gcj02        option.setScanSpan(5000);//设置发起定位 请求的时间隔为5000ms        option.setIsNeedAddress(true);//返回的定位结果包含地址信息        option.setNeedDeviceDirect(true);//返回的定位结果 包含手机机头的方向        LocationClient.setLocOption(option);    }    @Override      protected void onDestroy() {          super.onDestroy();          //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理          bmapView.onDestroy();          bmapView=null;    }      @Override      protected void onResume() {          super.onResume();          //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理          bmapView.onResume();          }      @Override      protected void onPause() {          super.onPause();          //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理          bmapView.onPause();         }    }
0 0