、简单实现百度地图实时定位功能
2017-06-21 11:15
615 查看
首先是在百度地图官网注册账户,然后进行申请api,其他就不啰嗦了,获取sha1码方法
参考如下文章 http://jingyan.baidu.com/article/a681b0de0f860f3b184346bc.html
上代码
权限问题
注意
参考如下文章 http://jingyan.baidu.com/article/a681b0de0f860f3b184346bc.html
上代码
public class MainActivity extends AppCompatActivity { MapView mapView; // TODO: 2017-06-21 获取实时定位 BaiduMap baiduMap; LocationManager locationmanger; private String provider; private boolean isFirstlocats = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获取sdk的值,进行初始化,调用getApplicationContext获取全局传入 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.map_view); //获取baidumap实例 baiduMap = mapView.getMap(); // TODO: 2017-06-21 修改实现本人位置显示 baiduMap.setMyLocationEnabled(true); //获取位置提供器 locationmanger = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //获取所有位置提供器 //获取所有可用的额位置提供器 List<String> providerlist = locationmanger.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.makeText(this, "当前没有可用的位置提供器", Toast.LENGTH_SHORT).show(); return; } if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } Location location = locationmanger.getLastKnownLocation(provider); if (location != null) { //显示当前设备位置信息 showlocation(location); } locationmanger.requestLocationUpdates(provider, 5000, 1, locationlistener); } LocationListener locationlistener = new LocationListener() { @Override public void onLocationChanged(Location location) { //更新当前位置信息 if (location != null) { Log.e("jknhkhnj", "lkklmkl"); showlocation(location); } } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }; private void showlocation(final Location locationmessage) { if (isFirstlocats) { // String currentposition = "经度 :" + locationmessage.getLatitude() + "\n" + "纬度 :" + locationmessage.getLongitude(); // Log.e("currentposition", "===" + currentposition); LatLng ll = new LatLng(locationmessage.getLatitude(), locationmessage.getLongitude()); MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll); baiduMap.animateMapStatus(update); update = MapStatusUpdateFactory.zoomBy(16f); baiduMap.animateMapStatus(update); isFirstlocats = false; } // TODO: 2017-06-21 添加修改实现本人位置显示 MyLocationData.Builder locationbuilder = new MyLocationData.Builder(); locationbuilder.latitude(locationmessage.getLatitude()); locationbuilder.longitude(locationmessage.getLongitude()); MyLocationData locationData = locationbuilder.build(); baiduMap.setMyLocationData(locationData); } @Override protected void onDestroy() { //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 super.onDestroy(); // TODO: 2017-06-21 增加显示个人位置 baiduMap.setBaiduHeatMapEnabled(false); mapView.onDestroy(); if (locationmanger != null) { //关闭程序时候监听器移除 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } locationmanger.removeUpdates(locationlistener); } } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mapView.onPause(); } @Override protected void onResume() { //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 super.onResume(); mapView.onResume(); } } -=================================================================== 需要给build.gradle中添加如下代码
/** * 目前 Android Studio不支持自动添加 .so文件(Eclipse是支持的),所以我们需要手动加载libs下的.so的动态库 */ sourceSets { main() { jniLibs.srcDirs = ['libs'] } }==============================================
权限问题
//百度地图的权限 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <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" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />==================================================
注意
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> //百度地图的设置 <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="pPcy7cpMIxvofYKRiCItv6BpwrvTZG1s" /> </application>
相关文章推荐
- 浅谈百度地图的简单开发之结合方向传感器实现定位功能(三)
- 浅谈百度地图的简单开发之结合方向传感器实现定位功能(三)
- 【第三方SDK】百度地图实现最简单的定位功能(无地图界面)
- 基于百度地图 Android SDKv1.3.5实现简单的定位功能,自定义标题栏
- 百度地图引入 简单定位功能的实现 待修
- 高级部分(百度地图四)实时定位功能的实现
- 百度地图实现最简单的定位功能(无地图界面)
- 利用百度地图的路书功能实现汽车实时定位
- 百度地图的简单开发之方向传感器实现定位功能(三)
- 【第三方SDK】百度地图实现最简单的定位功能(无地图界面)
- 基于百度地图 Android SDKv1.3.5实现简单的定位功能,自定义标题栏
- 百度地图的简单开发之方向传感器实现定位功能
- 百度地图实现简单的定位功能
- 利用HTML5定位功能,实现在百度地图上定位
- AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能
- 基于android系统实现的简单定位功能
- 百度地图SDK地图学习——实现定位功能
- Android定位&地图&导航——基于百度地图实现的定位功能
- 利用HTML5定位功能,实现在百度地图上定位
- 百度地图定位功能的简单应用