案例二———百度地图上定位自己的位置
来源:互联网 发布:网络大电影市场规模 编辑:程序博客网 时间:2024/05/16 23:49
百度地图定位自己的位置
一.预期效果:
二.主要问题:
1.正确申请API
三.核心代码:
1.activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" > <com.baidu.mapapi.map.MapView android:id="@+id/map_view" android:layout_height="match_parent" android:layout_width="match_parent" android:clickable="true" /> </LinearLayout
2.AndroidManifest.xml
<manifest .... <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.perimission.READ_ETTINGS"/> <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_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"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> ... <application ... <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="AO0YBAVzeUxq2lDQYi72cFPT"/> ... </application> </manifest>
3.MainActivity.Java
package cn.bzu.tong.bmap; import java.util.List; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.view.Menu; import android.widget.Toast; import com.baidu.mapapi.SDKInitializer; 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; public 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.activity_main); 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.GPS_PROVIDER)){ provider = locationManager.GPS_PROVIDER; }else if(providerList.contains(locationManager.NETWORK_PROVIDER)){ provider = locationManager.NETWORK_PROVIDER; } else { //当没有可用位置服务器时,弹出Toast提示用户 Toast.makeText(this, "No location provider to use", Toast.LENGTH_LONG).show(); return ; } Location location = locationManager.getLastKnownLocation(provider); if(location != null){ navigateTo(location); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } private 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); baiduMap.animateMapStatus(update); isFirstLocate = false; } MyLocationData.Builder locationBuilder = new MyLocationData.Builder(); locationBuilder.latitude(location.getLatitude()); locationBuilder.longitude(location.getLongitude()); MyLocationData locationData = locationBuilder.build(); baiduMap.setMyLocationData(locationData); } 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); } } }; protected void onDestroy() { super.onDestroy(); baiduMap.setMyLocationEnabled(false); mapView.onDestroy(); if(locationManager != null){ //关闭程序时将监听移除 locationManager.removeUpdates(locationListener); } } protected void onPause() { super.onPause(); mapView.onPause(); } protected void onResume() { super.onResume(); mapView.onResume(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
0 0
- 案例二———百度地图上定位自己的位置
- 案例4_Android地图定位-百度地图上定位自己所在的位置
- 百度地图上定位自己的位置
- 百度地图上定位自己所在的位置
- 实验6:Android地图定位-百度地图上定位自己所在的位置
- 实验6:Android地图定位-百度地图上定位自己所在的位置
- Android地图定位-百度地图上定位自己所在的位置
- Android地图定位-百度地图上定位自己所在的位置
- Android地图定位-百度地图上定位自己所在的位置
- 百度地图不能定位自己的位置
- Android百度地图,定位自己的位置。
- 百度定位:定位自己位置,并显示在地图上
- Android 百度地图(二)——地图切换、定位、添加覆盖物、搜索位置、连线
- Android应用中使用百度地图API定位自己的位置(二)
- 百度地图BaiduMap--学习(二)------定位到自己的位置之没反应
- Android初级开发(十)——百度定位—在地图上显示你的位置
- 使用百度地图API,定位并显示自己的位置
- 【经验小谈】百度定位api使用 百度定位demo 百度地图快速定位 百度地图获取当前位置 获取自己的位置 百度定位示例
- 遇到的一个网页排版问题
- Matlab 利用参数方程绘制空心球体
- Unity中使用WebView
- 数据结构总结
- Mongodb--基本概念
- 案例二———百度地图上定位自己的位置
- mysql 自带时间函数date_format和str_to_date使用总结
- CFileDialog无法选择多个文件的解决办法
- 用户登录(login)过滤器(Filter)
- Android自定义View的基本步骤和使用自定义属性
- 记录下android studio 重命名包名
- iOS程序猿必知的11个swift技巧
- 《Android群英传》---读书笔记9
- 丢失非关键性文件的恢复