百度地图的简单使用与定位

来源:互联网 发布:通话魔音软件 编辑:程序博客网 时间:2024/05/16 10:24

先在清单文件中配置一下所需要的权限属性:

<!-- 百度地图的权限! --><uses-permission android:name="android.permission.GET_ACCOUNTS" /><uses-permission android:name="android.permission.USE_CREDENTIALS" /><uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /><uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /><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.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.BROADCAST_STICKY" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.READ_PHONE_STATE" />
别忘了配置Service

<service android:name="com.baidu.location.f"    android:enabled="true"    android:process=":remote"></service>配置所获取的key <meta-data    android:name="com.baidu.lbsapi.API_KEY"    android:value="em36kQQGBbLgyuxmxyrBQ4YUGhNlRaB8" />

接着就是布局文件了

<com.baidu.mapapi.map.MapView    android:id="@+id/mv_map"    android:layout_width="match_parent"    android:layout_height="match_parent"></com.baidu.mapapi.map.MapView>
最后就是重头戏了

public class MainActivity extends AppCompatActivity {    //地图控件    public MapView mapView = null;    //百度地图对象    public BaiduMap baiduMap = null;    //定位相关声明    public LocationClient locationClient = null;    //自定义图标    BitmapDescriptor mCurrentMarket = null;    //是否首次定位    boolean isFirstLoc = true;    //地图管理器    private BMapManager bMapManager;    //得到经纬度    private double longitude;    private double latitude;    private MyLocationListener myLitenner = new MyLocationListener();    private class MyLocationListener implements BDLocationListener {        @Override        public void onReceiveLocation(BDLocation location) {            longitude = location.getLongitude();            latitude = location.getLatitude();            boolean isLocateFailed = false;//定位是否成功            //MAP VIEW 销毁后不在处理新接收的位置            if (location == null || mapView == null)                return;            MyLocationData locData = new MyLocationData.Builder()                    //此处设置开发者获取到的方向信息,顺时针0-360                    .accuracy(location.getRadius())                    .direction(100).latitude(location.getLatitude())                    .longitude(location.getLongitude()).build();            baiduMap.setMyLocationData(locData);            //设置定位数据            if (isFirstLoc) {                isFirstLoc = false;                LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());                MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(ll, 16);                //设置地图中心点以及缩放级别                baiduMap.animateMapStatus(mapStatusUpdate);            }        }    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);       // bMapManager = new BMapManager();        //必须在布局文件前实现        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_main);            initView();            initData();    }    private void initData() {        locationClient.start();//开始定位        baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//设置为一般地图        baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);//设置为卫星地图        baiduMap.setTrafficEnabled(true);//开启交通图    }    private void initView() {        mapView = (MapView) findViewById(R.id.mv_map);        //获取地图对象控制器        baiduMap = mapView.getMap();        baiduMap.setBuildingsEnabled(true);//设置显示楼体        baiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(19f));//设置地图状态        //开启定位图层        baiduMap.setMyLocationEnabled(true);        locationClient = new LocationClient(getApplicationContext());//实例化LocationClient类        locationClient.registerLocationListener(myLitenner);//注册监听函数        this.setLocationOption();//设置定位参数    }    @Override    protected void onDestroy() {        //退出销毁        locationClient.stop();        baiduMap.setMyLocationEnabled(false);        mapView.onDestroy();        mapView = null;        super.onDestroy();    }    @Override    protected void onResume() {        super.onResume();        mapView.onResume();    }    @Override    protected void onPause() {        super.onPause();        mapView.onPause();    }    /**     * 设置定位参数     */    private void setLocationOption() {        LocationClientOption option = new LocationClientOption();        option.setOpenGps(true);//打开GPS        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置定位模式        option.setCoorType("bd0911");//返回的定位结果是百度经纬度,默认值是gcj02        option.setScanSpan(5000);//设置发起定位请求的时间间隔为5000ms        option.setIsNeedAddress(true);//返回的定位结果饱饭地址信息        option.setNeedDeviceDirect(true);// 返回的定位信息包含手机的机头方向        locationClient.setLocOption(option);    }}

当然,一些所需要的依赖包可以根据需求自行下载,就不列举了,希望以上东西有用

原创粉丝点击