定位 android8.1.0,8.1.2 实现Android定位(2)
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)相关推荐
- 百度定位---适配8.0限制后台定位
2019独角兽企业重金招聘Python工程师标准>>> 适配8.0限制后台定位 package com.qu.weibao.demo;import android.app.Activ ...
- 通用定时发送工具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下载地 ...
- Android SDK Manager 无法下载Android8.1.0(API 27) SDK Platform的解决方案
在Android SDK Manager 中安装Android 8.1.0 SDK Platform时报错导致无法安装. 错误信息:Downloading SDK Platform Android 8 ...
- 江苏盐城发生5.0级地震——海中地震如何定位地震发生位置
江苏盐城发生5.0级地震--海中地震如何定位地震发生位置 2021年11月17日13时54分在江苏盐城市大丰区海域(北纬33.50度,东经121.19度)发生5.0级地震,震源深度17千米.江苏.上海 ...
- galaxy s6 android8,这些三星机型确认可以升级Android 8.0
[中关村在线新闻资讯]6月29日消息:每次在谷歌公布新一代Android系统版本后,哪些机型可能升级到新版本就是很多用户关心的问题.现在谷歌将在下个月发布Android 8.0的第四个开发者预览版,而 ...
- Android 定位的实现
安卓定位可以通过使用GPS或者通过network获取地址,俩个都需要增加获取位置的权限! 需要在AndroidManifest里面增加权限! 分别介绍一下学习心得! //ACCESS_FINE_LOC ...
- android 定位的几种方式介绍
[地理位置] android 定位的几种方式介绍 开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面 www.androidkaifa.com 总结了一下网络 ...
- android 定位服务 耗电吗,关于Android的定位服务
今天因为工作须要,把以前编写的一个GPS测试法度榜样拿出来从新修改了一下.这个法度榜样说起来竽暌剐些汗青了,是我11年编写的,那时刻学了Android开辟没多久,算是一个实验性的作品.如今工作须要,从 ...
- 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...
以下内容自定位 SDK V3.2.0 版本后支持. 第一步,创建地理围栏 地理围栏没有最大个数限制,您可以无限制的创建围栏.但请您根据业务需求合理的创建围栏,控制围栏个数可以有效的保证程序执行效率.定 ...
最新文章
- 提取IPv6地址的编码信息
- 雪鹰领主服务器维护,《雪鹰领主》7月14日维护更新公告
- c++ 函数过长 拆分_实用EXECL办公函数 【多条件排名】
- java黄油刀_一篇文章玩转ButterKnife,让代码更简洁
- 【机器学习】逻辑回归—良/恶性乳腺癌肿瘤预测
- 信息学奥赛一本通(1143:最长最短单词)
- java三判式,Java编程设计模式,第 3 部分
- kubernets 集群和本地环境联调环境打通工具kt-connect
- 使用yahoo雅虎js库(YUI)建立无刷新的N级树(可添加删除节点)
- 一页纸项目管理及模板下载
- WinRAR 无广告注册安装
- 神策分析 iOS SDK 架构解析
- 微信小程序 列表展示+详情
- 合并两个有序链表js
- DFS深度优先搜索详解
- 车牌归属地 API数据接口
- adb shell input(系统服务:input)
- 无需编程,DIY自己智能小车的Android蓝牙遥控软件(一)
- nextdate函数白盒测试问题 软件测试_NextDate函数测试用例 -
- 苹果手机变成耳机模式怎么调回来_百元真无线蓝牙耳机,竟比肩airpods?
热门文章
- VC++动态链接库(DLL)编程深入浅出(zz)
- SQL SERVER 2005无法远程连接的问题
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥...
- object-c 队列
- 全网最详细SpringBatch批处理读取分区(Paratition)文件讲解
- Java并发编程系列之CountDownLatch用法及详解
- npm安装serve实现静态资源的访问
- CDH6.3.2界面配置hbase-site.xml的方法
- Ansible-list-Dictionary-数据格式
- Scala中的四种访问权限