打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
高德地图api之location定位服务 | 学步园

高德地图api之location定位服务

2013年07月25日 ? 综合 ? 共 2825字 ? 字号 ? 评论关闭

除了basic map外,高德地图api还提供了定位服务,兴趣点搜索服务,路线查找服务,离线地图服务。

现在我们看一下api中如何使用AMaplocation定位服务:

其实在android api中已经提供了android.location package,但是AMap的api提供了一个MapLocationApi.jar包,其中的定位服务基本一样,其中有几个重要的类:AMapLocation,AMapLocationListener,LocationManagerProxy,LocationProviderProxy

与 android自带的Location服务一样,AMapLocationManagerProxy类是Location服务的关键类,其意思就是Location服务的管理,而LocationProviderProxy类就是Location服务的提供者,而AMapLocation就是Location服务的实现形式,AMapLocationListener就是Location的监听器。


》Fisrtly,我们来看怎样实现GPS定位:

第一步:定义一个LocationManagerProxy类的对象,由LocationProviderPRoxy不断请求获得AMapLocation

locationManager = LocationManagerProxy.getInstance(this);

// Location API定位采用GPS定位方式,时间最短是5000毫秒

locationManager.requestLocationUpdates(

LocationManagerProxy.GPS_PROVIDER, 5000, 10,
AMapLocationListener
);

第二步:

对获得AMapLocation进行事件处理,重写AMapLocationListener的四个方法:

@Override

public
void
onLocationChanged(Location location) {

}

@Override

public
void
onProviderDisabled(String provider) {

}

@Override

public
void
onProviderEnabled(String provider) {

}

@Override

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

}

/**

* 过滤gps定位返回的数据

*/

@Override

public
void
onLocationChanged(AMapLocation location) {

if (location !=null) {

Double geoLat = location.getLatitude();

Double geoLng = location.getLongitude();

String str = ("定位成功:(" + geoLng +"," + geoLat +
")"

+ "\n精    度    :" + location.getAccuracy() +"米"

+ "\n定位方式:" + location.getProvider() +"\n定位时间:" + AMapUtil

.convertToTime(location.getTime()));

Message msg = new Message();

msg.obj = str;

if (handler !=null) {

handler.sendMessage(msg);

}

}

}

ps:在重写的方法中我们定义了获得Location之后要做的事,这里就是在一个TextView中显示出来。

第三步:

在Activity的onPause()和onDestroy()中注销掉LocationManagerProxy和它的请求。

locationManager.removeUpdates(this);

locationManager.destory();


使用过andorid自带的Location服务就知道Location服务的提供者Provider有好几个值,除了GPS定位之外还有wifi定位,由于AMap中GPS默认是开启的,所以我们使用AMapLocationProxy.AMapNetwork这个Provier是就可以实现混合定位,这样就可以全面获得定位服务,获得了定位Location之后,当然要将其显示在AMap上。

》如何将定位信息显示在AMap上:

将定位服务和AMap服务集成在一起,就可以在地图上显示自己的定位:

第一步:定义AMapLocationProxy类通过AMapLocationProviderProxy获得Location服务,重写AMapLocationListener的五个方法;

第二步:设置地图上的LocationButton能响应点击事件,对点击事件设置定位地点LocationSource,

LocationSouce是com.amp.api.maps中的一个接口类,其中有一个监听器OnLocationChangeListener。

aMap.setLocationSource(LocationSource);

aMap.setMyLocationEnabled(true);

第三步:重写LocationSource的两个方法,目的是是让地图显示定位地点。

@Override

public
void
activate(OnLocationChangedListener listener) {

mListener = listener;

if (mAMapLocationManager ==null)
{

mAMapLocationManager = LocationManagerProxy.getInstance(this);

}

/*

* mAMapLocManager.setGpsEnable(false);//

* 1.0.2版本新增方法,设置true表示混合定位中包含gps定位,false表示纯网络定位,默认是true

*/

// Location API定位采用GPS和网络混合定位方式,时间最短是5000毫秒

mAMapLocationManager.requestLocationUpdates(

LocationProviderProxy.AMapNetwork, 5000, 10,this);

}

@Override

public
void
deactivate() {

mListener =null;

if (mAMapLocationManager !=null)
{

mAMapLocationManager.removeUpdates(this);

mAMapLocationManager.destory();

}

mAMapLocationManager =null;

}

第四步:注销掉获得的AMapLocationMangerProxy及其获得的服务。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
彻底解决Android GPS没法定位这一顽固问题
Android学习——百度地图开发定位与显示Demo
Android 打开 GPS 导航并获取位置信息 - 创世软件团队 - 博客园
开发基于 Google Map 的 Android 应用
Android?成功?使用GPS获取当前地理位置(解决getLastKnownLocati...
10.14 Android GPS初涉
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服