Baidu Map定位显示

来源:互联网 发布:手机程序加密软件 编辑:程序博客网 时间:2024/04/20 21:57

Location(位置):

百度地图接口的使用:
首先要到百度开发者申请一个密匙
密匙一般为:

k5N**********************8E 和 包名com.example.baidumaptest
在新建工程的时候要和在注册的时候对上,否则就会出现错误

在application中加上(最后面有,可以看看)

<meta-data            android:name="com.baidu.lbsapi.API_KEY"            android:value="k5***************fE" />

其次将其完整包下载下来
将jar文件和armebi文件夹等复制到libs下然后把jar文件Build path —add to path

main_activity.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <com.baidu.mapapi.map.MapView         android:id="@+id/map_view"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:clickable="true"        /></LinearLayout>
//MainActivitypublic class MainActivity extends Activity {    private MapView mapView;    private BaiduMap baiduMap;    private LocationManager locationManager;    private String provider;    private boolean isFirstLocate = true;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.main_activity);        mapView = (MapView) findViewById(R.id.map_view);        baiduMap = mapView.getMap();        baiduMap.setMyLocationEnabled(true);// 设置位置可见        //位置管理器        locationManager = (LocationManager)         getSystemService(Context.LOCATION_SERVICE);        // 获取所有的位置提供器        List<String> providerList = locationManager.getProviders(true);        if(providerList.contains(LocationManager.NETWORK_PROVIDER)){            provider = LocationManager.NETWORK_PROVIDER;        }else if(providerList.contains(LocationManager.GPS_PROVIDER)){            provider = LocationManager.GPS_PROVIDER;        }else{            Toast.makeText(this, "No location provider for use",                     Toast.LENGTH_SHORT).show();            return;        }        // location对象,包含各种位置信息        Location location = locationManager.getLastKnownLocation(provider);        if (location != null) {            navigateTo(location);        }        //1m 每2s 更新一次位置信息        locationManager.requestLocationUpdates(provider, 2000, 1,                locationListener);    }    //位置监听    LocationListener locationListener = new LocationListener() {        @Override        public void onStatusChanged(String provider, int status, Bundle extras) {            // TODO Auto-generated method stub        }        @Override        public void onProviderEnabled(String provider) {            // TODO Auto-generated method stub        }        @Override        public void onProviderDisabled(String provider) {            // TODO Auto-generated method stub        }        @Override        public void onLocationChanged(Location location) {            // TODO Auto-generated method stub            //位置刷新            if (location != null) {                navigateTo(location);            }        }    };    //调用BaiduMap的接口    protected void navigateTo(Location location) {        // TODO Auto-generated method stub        if (isFirstLocate) {            LatLng ll = new LatLng(location.getLatitude(),                    location.getLongitude());            MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);            baiduMap.animateMapStatus(update);            update = MapStatusUpdateFactory.zoomTo(16f);// 缩放级别16            baiduMap.animateMapStatus(update);            isFirstLocate = false;        }        MyLocationData.Builder locaBuilder = new MyLocationData.Builder();        locaBuilder.latitude(location.getLatitude());        locaBuilder.longitude(location.getLongitude());        MyLocationData locationData = locaBuilder.build();        baiduMap.setMyLocationData(locationData);    }    // 实现对生命周期的管理    @Override    protected void onDestroy() {        super.onDestroy();        baiduMap.setMyLocationEnabled(false);        mapView.onDestroy();        // 关闭时关闭监听器        if (locationManager != null) {            locationManager.removeUpdates(locationListener);        }    }    @Override    protected void onResume() {        super.onResume();        mapView.onResume();    }    @Override    protected void onPause() {        super.onPause();        mapView.onPause();    }}

需要很多权限,能想到的基本可以写上:

<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.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.READ_PHONE_STATE"/>    <uses-permission android:name="android.permission.GET_TASKS" />    <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.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_SETTINGS" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.CALL_PHONE" />    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_GPS" /> <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <!--注意这个不可少-->        <meta-data            android:name="com.baidu.lbsapi.API_KEY"            android:value="k5***************fE" />        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>
0 0
原创粉丝点击