Android 百度地图简单使用

来源:互联网 发布:c语言文件分隔符 编辑:程序博客网 时间:2024/06/05 02:34

介绍一下百度地图的基本配置,首先自行注册百度开发者账号,创建一个应用。在Android工程的manifest文件中添加权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WAKE_LOCK"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_SETTINGS" />

在Application中添加:

<meta-data            android:name="com.baidu.lbsapi.API_KEY"            android:value="应用密钥" />        <service            android:name="com.baidu.location.f"            android:enabled="true"            android:process=":remote" />//最新的好像不需要下面这个servive       
下载百度地图SDK:


将jar文件放到工程的libs目录,在app的java同级创建jniLibs,把其他的放进去。

在xml布局文件放入地图控件:

<com.baidu.mapapi.map.MapView      android:id="@+id/bmapView"      android:layout_width="fill_parent"      android:layout_height="fill_parent"      android:clickable="true" />

主代码如下:

 public class MainActivity extends AppCompatActivity implements BDLocationListener{    private MapView mMapView = null;    private BaiduMap mBaiduMap = null;    private BitmapDescriptor mCurrentMarker = null;    private LocationClient mLocationClient = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //在使用SDK各组件之前初始化context信息,传入ApplicationContext        //注意该方法要再setContentView方法之前实现        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_main);        //获取地图控件引用        mMapView = (MapView) findViewById(R.id.bmapView);        mBaiduMap = mMapView.getMap();        // 开启定位图层        mBaiduMap.setMyLocationEnabled(true);        // 设置定位图层的配置(定位模式,是否允许方向信息,用户自定义定位图标)        MyLocationConfiguration.LocationMode mCurrentMode = MyLocationConfiguration.LocationMode.FOLLOWING;        MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);        mBaiduMap.setMyLocationConfigeration(config);        //触摸地图时,取消中心固定在定位坐标        mBaiduMap.setOnMapTouchListener(new BaiduMap.OnMapTouchListener() {            @Override            public void onTouch(MotionEvent motionEvent) {                MyLocationConfiguration config = new MyLocationConfiguration(null, true, mCurrentMarker);                mBaiduMap.setMyLocationConfigeration(config);            }        });        mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类        mLocationClient.registerLocationListener(this);    //注册监听函数        //设置定位参数        LocationClientOption option = new LocationClientOption();        option.setOpenGps(true);        option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02        option.setScanSpan(1000);        mLocationClient.setLocOption(option);        mLocationClient.start();          }    @Override    protected void onPause() {        super.onPause();        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理        mMapView.onPause();    }    @Override    protected void onResume() {        super.onResume();        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理        mMapView.onResume();    }    @Override    protected void onDestroy() {        super.onDestroy();        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理        // 退出时销毁定位        mLocationClient.stop();        // 关闭定位图层        mBaiduMap.setMyLocationEnabled(false);        mMapView.onDestroy();        mMapView = null;    }    @Override    public void onReceiveLocation(BDLocation bdLocation) {        // 构造定位数据        MyLocationData locData = new MyLocationData.Builder()                .accuracy(bdLocation.getRadius())                // 此处设置开发者获取到的方向信息,顺时针0-360                .direction(100).latitude(bdLocation.getLatitude())                .longitude(bdLocation.getLongitude()).build();        // 设置定位数据        mBaiduMap.setMyLocationData(locData);    }}


0 0
原创粉丝点击