8.1.2  实现Android定位(2)

(3)实现定位管理器

可以使用Context.getSystemService()方法实现定位管理器功能,并传入Context.LOCATION_ SERVICE参数来获取定位管理器。例如下面的代码。

LocationManagerlm= (LocationManager) getSystemService(Context.LOCATION_SERVICE);

接下来将原先的MyGPSActivity做一些修改,让它实现一个LocationListener接口,使其能够监听定位信息的改变。

class MyGPSActivity extends MapActivity implements LocationListener {

…………

public void onLocationChanged(Location location) {}

public void onProviderDisabled(String provider) {}

public void onProviderEnabled(String provider) {}

public void onStatusChanged(String provider, int status, Bundle extras) {}

protected boolean isRouteDisplayed() {

return false;

}

}

接下来初始化LocationManager,并在它的onCreate()方法中注册定位监听器。例如下面的代码。

@Override

public void onCreate(Bundle savedInstanceState) {

LocationManagerlm= (LocationManager)getSystemService(Context.LOCATION_SERVICE);

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, this);

}

这样代码中的方法onLocationChanged()会在用户的位置发生500米距离的改变之后进行调用。这里默认使用的LocationProvider是"gps"(GSP_PROVIDER),但是可以根据你的需要,使用特定的Criteria对象调用LocationManger类的getBestProvider方法获取其他的 LocationProvider。以下代码是onLocationChanged()方法的参考实现。

public void onLocationChanged(Location location) {

if (location != null) {

doublelat=location.getLatitude();

doublelng=location.getLongitude();

p=newGeoPoint((int) lat * 1000000, (int) lng * 1000000);

mc.animateTo(p);

}

通过上面的代码,获取了当前的新位置并在地图上更新位置显示。还可以为应用程序添加一些诸如缩放效果、地图标注和文本等功能。

(4)添加缩放控件

//将缩放控件添加到地图上

ZoomControlszoomControls=  (ZoomControls) gMapView.getZoomControls();

zoomControls.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,

LayoutParams.WRAP_CONTENT));

gMapView.addView(zoomControls);

gMapView.displayZoomControls(true);

(5)添加Map Overlay

***一步是添加Map Overlay,例如通过下面的代码可以定义一个overlay。

class MyLocationOverlay extends com.google.android.maps.Overlay {

public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {

super.draw(canvas, mapView, shadow);

Paintpaint=newPaint();

// 将经纬度转换成实际屏幕坐标

PointmyScreenCoords=newPoint();

mapView.getProjection().toPixels(p, myScreenCoords);

paint.setStrokeWidth(1);

paint.setARGB(255, 255, 255, 255);

paint.setStyle(Paint.Style.STROKE);

Bitmapbmp=BitmapFactory.decodeResource(getResources(), R.drawable.marker);

canvas.drawBitmap(bmp, myScreenCoords.x, myScreenCoords.y, paint);

canvas.drawText(”how are you…”, myScreenCoords.x, myScreenCoords.y, paint);

return true;

}

}

通过上面的Overlay会在地图上显示一段文本,接下来可以把这个Overlay添加到地图上去。

MyLocationOverlaymyLocationOverlay=newMyLocationOverlay();

Listlist=gMapView.getOverlays();

list.add(myLocationOverlay);

【责任编辑:book TEL:(010)68476606】

点赞 0

定位 android8.1.0,8.1.2 实现Android定位(2)相关推荐

  1. 百度定位---适配8.0限制后台定位

    2019独角兽企业重金招聘Python工程师标准>>> 适配8.0限制后台定位 package com.qu.weibao.demo;import android.app.Activ ...

  2. 通用定时发送工具V1.1.2、Excel办公辅助工具V1.0.1、我在这儿-个人定位助手V5.0.1下载

    1.通用定时发送工具V1.1.2下载地址:https://download.csdn.net/download/wenjuan11122/12498780 2.Excel办公辅助工具V1.0.1下载地 ...

  3. Android SDK Manager 无法下载Android8.1.0(API 27) SDK Platform的解决方案

    在Android SDK Manager 中安装Android 8.1.0 SDK Platform时报错导致无法安装. 错误信息:Downloading SDK Platform Android 8 ...

  4. 江苏盐城发生5.0级地震——海中地震如何定位地震发生位置

    江苏盐城发生5.0级地震--海中地震如何定位地震发生位置 2021年11月17日13时54分在江苏盐城市大丰区海域(北纬33.50度,东经121.19度)发生5.0级地震,震源深度17千米.江苏.上海 ...

  5. galaxy s6 android8,这些三星机型确认可以升级Android 8.0

    [中关村在线新闻资讯]6月29日消息:每次在谷歌公布新一代Android系统版本后,哪些机型可能升级到新版本就是很多用户关心的问题.现在谷歌将在下个月发布Android 8.0的第四个开发者预览版,而 ...

  6. Android 定位的实现

    安卓定位可以通过使用GPS或者通过network获取地址,俩个都需要增加获取位置的权限! 需要在AndroidManifest里面增加权限! 分别介绍一下学习心得! //ACCESS_FINE_LOC ...

  7. android 定位的几种方式介绍

    [地理位置] android 定位的几种方式介绍 开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面 www.androidkaifa.com 总结了一下网络 ...

  8. android 定位服务 耗电吗,关于Android的定位服务

    今天因为工作须要,把以前编写的一个GPS测试法度榜样拿出来从新修改了一下.这个法度榜样说起来竽暌剐些汗青了,是我11年编写的,那时刻学了Android开辟没多久,算是一个实验性的作品.如今工作须要,从 ...

  9. 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...

    以下内容自定位 SDK V3.2.0 版本后支持. 第一步,创建地理围栏 地理围栏没有最大个数限制,您可以无限制的创建围栏.但请您根据业务需求合理的创建围栏,控制围栏个数可以有效的保证程序执行效率.定 ...

最新文章

  1. 提取IPv6地址的编码信息
  2. 雪鹰领主服务器维护,《雪鹰领主》7月14日维护更新公告
  3. c++ 函数过长 拆分_实用EXECL办公函数 【多条件排名】
  4. java黄油刀_一篇文章玩转ButterKnife,让代码更简洁
  5. 【机器学习】逻辑回归—良/恶性乳腺癌肿瘤预测
  6. 信息学奥赛一本通(1143:最长最短单词)
  7. java三判式,Java编程设计模式,第 3 部分
  8. kubernets 集群和本地环境联调环境打通工具kt-connect
  9. 使用yahoo雅虎js库(YUI)建立无刷新的N级树(可添加删除节点)
  10. 一页纸项目管理及模板下载
  11. WinRAR 无广告注册安装
  12. 神策分析 iOS SDK 架构解析
  13. 微信小程序 列表展示+详情
  14. 合并两个有序链表js
  15. DFS深度优先搜索详解
  16. 车牌归属地 API数据接口
  17. adb shell input(系统服务:input)
  18. 无需编程,DIY自己智能小车的Android蓝牙遥控软件(一)
  19. nextdate函数白盒测试问题 软件测试_NextDate函数测试用例 -
  20. 苹果手机变成耳机模式怎么调回来_百元真无线蓝牙耳机,竟比肩airpods?

热门文章

  1. VC++动态链接库(DLL)编程深入浅出(zz)
  2. SQL SERVER 2005无法远程连接的问题
  3. 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥...
  4. object-c 队列
  5. 全网最详细SpringBatch批处理读取分区(Paratition)文件讲解
  6. Java并发编程系列之CountDownLatch用法及详解
  7. npm安装serve实现静态资源的访问
  8. CDH6.3.2界面配置hbase-site.xml的方法
  9. Ansible-list-Dictionary-数据格式
  10. Scala中的四种访问权限