本文在上文基础上加入GPS定位功能,实现实时定位,代码如下:

Activity:

package com.home;import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;public class LocationActivity extends Activity {/** 定义LocationManager对象 */private LocationManager locationManager;/** 定义当前Location对象 */private Location currentLocation;/** 显示地图的View */private MapView mMapView = null;/*** 用MapController完成地图控制*/private MapController mMapController = null;/*** MKMapViewListener 用于处理地图事件回调*/MKMapViewListener mMapListener = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/*** 使用地图sdk前需先初始化BMapManager. BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建,* 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁*/DemoApplication app = (DemoApplication) this.getApplication();if (app.mBMapManager == null) {app.mBMapManager = new BMapManager(this);/*** 如果BMapManager没有初始化则初始化BMapManager*/app.mBMapManager.init(DemoApplication.strKey,new DemoApplication.MyGeneralListener());}setContentView(R.layout.main);init();}/*** 初始化*/private void init() {// 获取系统LocationManager服务locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);// // 从GPS获取最近的定位信息currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);// 绑定监听,有4个参数// 参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种// 参数2,位置信息更新周期,单位毫秒// 参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息// 参数4,监听// 备注:对于参数2和3:若参数3不为0,则以参数3为准;若参数3为0,则通过时间来定时更新;两者为0,则随时刷新locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2,1, new LocationListener() {@Overridepublic void onLocationChanged(Location location) {updateMap(location);}@Overridepublic void onProviderDisabled(String provider) {updateMap(null);}@Overridepublic void onProviderEnabled(String provider) {updateMap(locationManager.getLastKnownLocation(provider));}@Overridepublic void onStatusChanged(String provider, int status,Bundle extras) {}});initMap();}/*** 初始化地图*/private void initMap() {mMapView = (MapView) findViewById(R.id.main_bmapView);/*** 获取地图控制器*/mMapController = mMapView.getController();/*** 设置地图是否响应点击事件 .*/mMapController.enableClick(true);/*** 设置地图缩放级别*/mMapController.setZoom(12);double cLat = 39.945;double cLon = 116.404;// 如果未能定位则设置默认中心点为天安门GeoPoint p = new GeoPoint((int) (cLat * 1E6), (int) (cLon * 1E6));mMapController.setCenter(p);updateMap(currentLocation);mMapListener = new MKMapViewListener() {@Overridepublic void onMapMoveFinish() {/*** 在此处理地图移动完成回调 缩放,平移等操作完成后,此回调被触发*/}@Overridepublic void onClickMapPoi(MapPoi mapPoiInfo) {/*** 在此处理底图poi点击事件 显示底图poi名称并移动至该点 设置过:* mMapController.enableClick(true); 时,此回调才能被触发* */String title = "";if (mapPoiInfo != null) {title = mapPoiInfo.strText;Toast.makeText(LocationActivity.this, title,Toast.LENGTH_SHORT).show();mMapController.animateTo(mapPoiInfo.geoPt);}}@Overridepublic void onGetCurrentMap(Bitmap b) {/*** 当调用过 mMapView.getCurrentMap()后,此回调会被触发 可在此保存截图至存储设备*/}@Overridepublic void onMapAnimationFinish() {/*** 地图完成带动画的操作(如: animationTo())后,此回调被触发*/}/*** 在此处理地图加载完成事件*/@Overridepublic void onMapLoadFinish() {Toast.makeText(LocationActivity.this, "地图加载完成",Toast.LENGTH_SHORT).show();}};mMapView.regMapViewListener(DemoApplication.getInstance().mBMapManager,mMapListener);}@Overrideprotected void onPause() {/*** MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()*/mMapView.onPause();super.onPause();}@Overrideprotected void onResume() {/*** MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()*/mMapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {/*** MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()*/mMapView.destroy();super.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mMapView.onSaveInstanceState(outState);}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);mMapView.onRestoreInstanceState(savedInstanceState);}/*** 更新地图*/private void updateMap(Location location) {if (location != null) {// 纬度double latitude = location.getLatitude();// 经度double longitude = location.getLongitude();GeoPoint p = new GeoPoint((int) (latitude * 1E6),(int) (longitude * 1E6));mMapController.setCenter(p);}}
}

Application类与上文完全一样。

Manifest里面比上文多加一个如下权限:

 <!-- 使用GPS需要的权限 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

布局文件也和上文完全一样。

转载于:https://www.cnblogs.com/suncoolcat/p/3292048.html

使用百度地图结合GPS进行定位相关推荐

  1. php调用百度地图定位,php用百度地图API进行IP定位和GPS定位

    /** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apiconsole/key ...

  2. android百度地图单点定位_Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡...

    一.问题描述 上一次我们使用百度地图实现基本的定位功能,接下来我们继续实现搜索和定位,并使用LocationOverlay绘制定位位置,同时展示如何使用自定义图标绘制并点击时弹出泡泡 如图所示: 二. ...

  3. 百度地图之地图显示和定位,获取定位的经纬度

    在百度地图api开放平台,把demo下载 把第三方的包粘贴到自己项目的libs包下(android-support-v4.jar这个包不要粘) 在百度开发平台创建项目,输入项目名, 从cmd中获取sh ...

  4. 百度地图实现普通地图、定位、周边搜索功能

    //--------------一下是普通地图的实现----------------------------------- 1:打开百度地图APi进去,如果没有注册过的需要注册,注册过的登录进入 2: ...

  5. 使用百度地图api模拟实时定位页面 完整示例

    使用百度地图api模拟实时定位页面 完整示例 效果:使用百度地图api在页面上显示车辆的实时位置,并有自动刷新和手动刷新两种方式可以选择.每次刷新后,都会在地图上显示车辆的最新位置. 示例运行效果截图 ...

  6. 在web页面嵌入百度地图(含定点定位)

    在web页面嵌入百度地图(含定点定位) 一.操作步骤 二.可能遇到的问题 1.标记图标没有正常显示出来 2.使用到项目中可能遇到的问题 (1)地图内容显示不正常 (2)标注名称的边框显示不正常 三.参 ...

  7. HTML5+百度地图API实现地理定位

    背景 如果知道用户在哪里,往往会提高很多Web应用的体验,比如为用户指明方向,对它们要去的地方给出建议,让用户知道它们所在的区域内有哪些人可能会对某个活动感兴趣等等.现在,利用HTML5(以及基于Ja ...

  8. 百度地图api,第一次定位成功,后面505错误

    百度地图api,第一次定位成功,后面505错误 1.查看key对不对 2.查看AndroidManifest中放的位置对不对,是放在 <application里面与 <activity a ...

  9. 百度地图api搜索地址定位

    下载地址百度地图api地址搜索定位示例,选择公司名称地图上显示对应地址 dd:

最新文章

  1. 每天一道Java题[7]
  2. HTML的xmlns的作用
  3. 从远程服务器获取数据
  4. python调用excel的宏_配置Office Excel运行Python宏脚本
  5. 推荐几款实用性强的外业勘察地图软件
  6. android单选题数据库,数据库系统工程师题库
  7. 计算机组成原理(3)——存储器
  8. 三种嵌入式操作系统的分析与比较
  9. 锐度对比度饱和度什么的
  10. 数据库质疑修复总结 For SQL Server 2000/2005/2008/2008R2
  11. java计时器脚本_在倒数计时器脚本中跳过很多秒
  12. Nginx详细配置(收录)
  13. 免费资源快来看 蓝桥杯单片机组历届省赛国赛题目解答(省一国二)
  14. R语言多项逻辑回归-因变量是无序多分类
  15. ADSL宽带共享上网设置图解
  16. LaTex 把上下标符号放在正上和正下方公式介绍
  17. 事件-驱动模拟(Event-driven simulation)
  18. 染纱厂车间一个普通员工的工资
  19. Python 换行符以及如何在 Python 输出时不换行
  20. 一、T100之料件管理

热门文章

  1. python代码壁纸-70行python代码实现壁纸批量下载
  2. python处理excel表格实例-通过实例学习Python Excel操作
  3. python需要学多久才能找到工作-为什么Python适合初学者,一般要学习多久
  4. python实现简单的api接口-对Python实现简单的API接口实例讲解
  5. python培训费用-Python培训费用得多少?
  6. python小游戏源码-python 像素小鸟小游戏源码(flappybird)
  7. python错误-第16天:Python 错误和异常
  8. python培训机构推荐-Python培训班哪家好?老男孩Python入门学习
  9. 学python爬虫需要什么基础-从零开始教你学爬虫!python爬虫的基本流程!
  10. 为什么python画不了图-python-为什么pygame不画一个圆?