怎么用GPS在高德地图精确定位上精确定位?

2858人阅读
Android应用(97)
(1)获取高德地图android SDK的key
具体过程可以参考:
(2)配置andriod中的manifest文件
(2.1)配置key
&application
& & & & android:allowBackup=&true&
& & & & android:icon=&@drawable/logo&
& & & & android:label=&@string/app_name&
& & & & android:theme=&@style/NormalPageTheme& &
& & & & &meta-data
& & & & & & android:name=&com.amap.api.v2.apikey&
& & & & & & android:value=&你的key& /&
(2.2)配置权限
& & &!--用于进行网络定位--&
&uses-permission android:name=&android.permission.ACCESS_COARSE_LOCATION&&&/uses-permission&
&!--用于访问GPS定位--&
&uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION&&&/uses-permission&
&!-- 获取运营商信息,用于支持提供运营商信息相关的接口--&
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE&&&/uses-permission&
&!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--&
&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE&&&/uses-permission&
&!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--&
&uses-permission android:name=&android.permission.CHANGE_WIFI_STATE&&&/uses-permission&
&!--用于访问网络,网络定位需要上网--&
&uses-permission android:name=&android.permission.INTERNET&&&/uses-permission&
&!-- 用于读取手机当前的状态--&
&uses-permission android:name=&android.permission.READ_PHONE_STATE&&&/uses-permission&
&!-- 写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据--&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE&&&/uses-permission&
(3)Acitivity中使用定位功能
(3.1)Layout中加载MapView对象,在Acitivity中获取MapView对象和Map对象
(3.2)设置定位来源
if (map != null) {
MyLocationStyle locationStyle = new MyLocationStyle();
locationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.location_marker));
locationStyle.strokeColor(Color.BLACK);
locationStyle.radiusFillColor(Color.argb(100, 0, 0, 180));
locationStyle.strokeWidth(1.0f);
map.setMyLocationStyle(locationStyle);
map.setLocationSource(this);
map.getUiSettings().setMyLocationButtonEnabled(true);
map.setMyLocationEnabled(true);
将Activity设置为的定位来源,因此该Activity需要实现接口LocationSource(包括active和disactive)
(3.3)设置位置***器
public void activate(OnLocationChangedListener listener) {
// TODO Auto-generated method stub
mListener =
if (mlocationClient == null) {
mlocationClient = new AMapLocationClient(this);
mLocationOption = new AMapLocationClientOption();
mlocationClient.setLocationListener(this);
mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);
mlocationClient.setLocationOption(mLocationOption);
mlocationClient.startLocation();
public void deactivate() {
// TODO Auto-generated method stub
mListener =
if (mlocationClient != null) {
mlocationClient.stopLocation();
mlocationClient.onDestroy();
mlocationClient =
mLocationOption =
上面也是将Activity设置为***对象,因此需要在activity中实现位置***器的onLocationChanged函数
public void onLocationChanged(AMapLocation amaplocation) {
// TODO Auto-generated method stub
if (amaplocation != null && mListener != null) {
if (amaplocation != null && amaplocation.getErrorCode() == 0) {
mListener.onLocationChanged(amaplocation);
String errText = &failed to locate,& + amaplocation.getErrorCode()+ &: &&
+ amaplocation.getErrorInfo();
Log.e(&error&,errText);
(3.5)定位成功
(4)如果出现“无法启动定位服务的错误”
此时,errorCode返回值为10,这个因为你把该Activity放在TabHost中进行渲染。你需要将创建LocationClient
mlocationClient = new AMapLocationClient(this);
这句代码改成
mlocationClient = new AMapLocationClient(getApplicationContext());
如果你的Activity不是放在TabHost进行渲染,则不需要进行上面的改动。
(5)完整的代码
package com.example.
import android.R.
import android.app.A
import android.graphics.C
import android.os.B
import android.util.L
import android.location.L
import com.amap.api.location.AMapL
import com.amap.api.location.AMapLocationC
import com.amap.api.location.AMapLocationClientO
import com.amap.api.location.AMapLocationClientOption.AMapLocationM
import com.amap.api.location.AMapLocationL
import com.amap.api.maps2d.AM
import com.amap.api.maps2d.CameraU
import com.amap.api.maps2d.CameraUpdateF
import com.amap.api.maps2d.LocationS
import com.amap.api.maps2d.MapV
import com.amap.api.maps2d.model.BitmapDescriptorF
import com.amap.api.maps2d.model.CameraP
import com.amap.api.maps2d.model.LatL
import com.amap.api.maps2d.model.MyLocationS
//终于找到报错“10: 定位服务启动失败”的问题
//这个MapActivity放置的位置有关系,当Activity放在TabSpec中就有问题
//如果单独作为一个activity则没有问题
public class MapActivity extends Activity implements LocationSource,
AMapLocationListener{
private MapView mapV
private AM
//定位功能
private OnLocationChangedListener mL
private AMapLocationClient mlocationC
private AMapLocationClientOption mLocationO
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.forum_home_page);
mapView = (MapView)findViewById(R.id.mapview);
mapView.onCreate(savedInstanceState);
map = mapView.getMap();
//修改地图的中心点位置
CameraPosition cp = map.getCameraPosition();
CameraPosition cpNew = CameraPosition.fromLatLngZoom(new LatLng(31.22, 121.48), cp.zoom);
CameraUpdate cu = CameraUpdateFactory.newCameraPosition(cpNew);
map.moveCamera(cu);
//初始化定位服务
initLocationService();
//初始化定位服务,这个地方有错误,这个地方map已经初始化
//因此定位的初始化代码就进不去了。
private void initLocationService() {
if (map != null) {
MyLocationStyle locationStyle = new MyLocationStyle();
locationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.location_marker));
locationStyle.strokeColor(Color.BLACK);
locationStyle.radiusFillColor(Color.argb(100, 0, 0, 180));
locationStyle.strokeWidth(1.0f);
map.setMyLocationStyle(locationStyle);
map.setLocationSource(this);
map.getUiSettings().setMyLocationButtonEnabled(true);
map.setMyLocationEnabled(true);
protected void onResume() {
// TODO Auto-generated method stub
mapView.onResume();
super.onResume();
protected void onPause() {
// TODO Auto-generated method stub
mapView.onPause();
deactivate();
super.onPause();
protected void onDestroy() {
// TODO Auto-generated method stub
mapView.onDestroy();
super.onDestroy();
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
mapView.onSaveInstanceState(outState);
super.onSaveInstanceState(outState);
public void onLocationChanged(AMapLocation amaplocation) {
// TODO Auto-generated method stub
if (amaplocation != null && mListener != null) {
if (amaplocation != null && amaplocation.getErrorCode() == 0) {
mListener.onLocationChanged(amaplocation);
String errText = &failed to locate,& + amaplocation.getErrorCode()+ &: &
+ amaplocation.getErrorInfo();
Log.e(&error&,errText);
public void activate(OnLocationChangedListener listener) {
// TODO Auto-generated method stub
mListener =
if (mlocationClient == null) {
mlocationClient = new AMapLocationClient(getApplicationContext());
mLocationOption = new AMapLocationClientOption();
mlocationClient.setLocationListener(this);
mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);
mlocationClient.setLocationOption(mLocationOption);
mlocationClient.startLocation();
public void deactivate() {
// TODO Auto-generated method stub
mListener =
if (mlocationClient != null) {
mlocationClient.stopLocation();
mlocationClient.onDestroy();
mlocationClient =
mLocationOption =
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:42823次
积分:1271
积分:1271
排名:千里之外
原创:72篇
转载:124篇
(1)(5)(4)(3)(1)(1)(5)(16)(19)(32)(43)(41)(18)(1)(1)(3)定位 | 高德开放平台 | 高德地图API
Android平台
Web服务 & 其他
您现在的位置: > 定位
定位能做什么
1、获取用户实时位置信息,以便为其提供“附近”优质服务;
2、获取用户实时位置信息,设置地理围栏,实现信息的精准推送;
3、获得用户分布情况,通过位置大数据分析,实现高效的资源配置。
4、实时监测工作人员(专车、货运、快递、外卖等)的位置及运动轨迹,实现运力及人力的高效调度。
定位的使用场景
移动互联时代,定位无处不在,任何一个应用,只要想知晓用户位置,就一定会用到定位(不管是为用户提供服务,还是用于用户分析)。
高德定位深植于各类APP中,出行、社交、O2O、P2P、旅游、新闻、天气……
1、定位可以配合地图一起使用
适用于需要定位用户当前位置,及周边人车、商户位置,并将其展示在地图上的应用,典型案例:美团、神州专车
2、定位也可以独立使用
适用于只需定位用户位置,或计算两个或多个位置间距离,无需在地图上展示的应用,典型案例:陌陌、58到家
定位的实现原理
目前,主流的***方式大致分为三类:
1、GPS定位:通过手机中的GPS模块获取位置
2、基站定位:通过运营商的电信基站(2g、3g、4g等)进行定位
3、混合定位:GPS+基站+WIFI的混合定位方式
混合定位最为精确,高德采用的就是混合定位的方式。
三种定位方式的优劣势及应用场景
精度高,信息全,可获取经纬度、海拔高度、方向角度等信息
强依赖GPS卫星信号,在室内及城市楼宇密集地区,GPS定位会出现失败或漂移
在户外,尤其是开阔地(平原)精度高,多用于骑行、运动等app(如:骑记、乐动力等)和车载导航系统上
功耗低,并且基站数据丰富,通过算法能提供较理想的定位精度
定位精度受基站分布密度影响,基站密集地区定位精度较高(500米左右),基站分散地区定位精度大幅下降
运营商提供的定位服务多以该方式实现
GPS+基站定位+WIFI定位精度最高
移动端app采用最多的定位方式,不论在室外、室内还是在高楼林立的城市峡谷,都可以实现较为精准的定位
如何实现定位功能?点击在线体验,实际操作线上Demo,并查看开发文档。
(C) 2002- 版权所有 | 京ICP证070711号
感谢您的反馈
通过该反馈,您可以将对高德开放平台产品和文档的意见和建议发送给我们。如需咨询产品使用问题或获取技术支持,请访问帮助与支持
包含屏幕截图
请选择您要反馈的类型高德地图怎么用 高德手机地图使用教程
时间: 11:06:42来源:作者:Keung(0)
高德地图是老牌地图厂商,也是苹果iPhone、iPad、Mac等产品的地图数据在大陆的唯一提供商,在智能手机越来越普及的今天,高德地图也通过不断升级改进,为手机用户提供良好的地图服务。如果你还不知道手机上的高德地图怎么用,不妨来看看下面的基础操作教程吧!一、打开高德地图二、如果你没打开GPS定位,系统会提示你打开为保证地图使用的准确,建议在使用时打开GPS三、路线查询方法一1.点击右上角的【输入框】2.输入要去的地方,也可以选择下方给出的建议地点3.目的地在地图上标出,选择【路线】方法二1.点击下方的【路线】2.在【终点】里输入要去的地方四、路线建议1.根据情况选择一条路线2.系统给出路线规划,点击【从我的位置出发】还可以从地图上看路线
名称:高德地图v7.1.3.572离线包大小:19.3M下载:后使用快捷导航没有帐号?
平板/笔记本
高德地图导航时一直显示“GPS定位中”
&略有小成&
来自:浏览器
晕死了!!这几天要用高德地图时发现,一直“GPS定位中”,完全用不了!!我手机管家中权限管理全允许了,GPS也开了,网络连接也开了~~~~~~十几分钟了就是*的没反应!另一部三星手机没有这状况!华为的GPS也太厉害了吧~~~~~~求解决!!!!!!!!!!
width:100%">
&热心花粉&
来自:浏览器
楼主,建议卸载重装一下,也可能是第三方软件给禁用了
width:100%">
&已臻大成&
来自:浏览器
麻烦请让让 发表于
楼主,建议卸载重装一下,也可能是第三方软件给禁用了
重装一下。。。。。。醉了
width:100%">
&已臻大成&
来自:浏览器
麻烦请让让 发表于
楼主,建议卸载重装一下,也可能是第三方软件给禁用了
第三方。。。。醉了
width:100%">
&热心花粉&
来自:浏览器
克里啊啊啊 发表于
第三方。。。。醉了
你有更好的建议么?
width:100%">
&神功盖世&
来自:浏览器
重启试试。
width:100%">
&独步江湖&
来自:浏览器
3.0的GPS有问题坐等修复
width:100%">
&独步江湖&
来自:浏览器
可能软件禁用了,你下载一个GPS工具箱再试试!看看结果!
width:100%">
&略有小成&
来自:浏览器
3.0的GPS有问题坐等修复
我的是稳定版148
width:100%">
&略有小成&
来自:浏览器
可能软件禁用了,你下载一个GPS工具箱再试试!看看结果!
width:100%">
申请成为热心花粉,满足热心花粉条件即可获得!http://cn./forum.php?mod=viewthread&tid=183642
好基友勋章
花粉好机友,注册时间大于99天
1000万花粉
纪念花粉俱乐部注册花粉数超过1000万
【汉风雅韵】【大美黄山】【6X大?行】【十月秋收】【P9随手拍】【盛放花朵】
花粉客户端
Make it Possible
Make your device special
华为云服务
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
没有最新动态
关注花粉俱乐部
联系我们:
|关注花粉俱乐部:
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利东坡下载:内容最丰富最安全的下载站!
→ 手机高德地图怎么用 高德地图使用教程(图文)
作者:专题点击:404次评论:0次标签:
类型:安全其他大小:10.1M语言:中文 评分:5.0
随着智能手机的普及,现在人们出行都喜欢使用用手机地图来导航认路,这里给大家介绍的是高德地图,高德地图是免费地图导航产品,手机高德地图怎么用呢?下面小编就给大家详细介绍手机高德地图使用方法,一起来看看吧。手机高德地图怎么用 高德地图使用教程(图文)一、打开高德地图二、如果你没打开GPS定位,系统会提示你打开为保证地图使用的准确,建议在使用时打开GPS三、路线查询方法一1.点击右上角的【输入框】2.输入要去的地方,也可以选择下方给出的建议地点3.目的地在地图上标出,选择【路线】方法二1.点击下方的【路线】2.在【终点】里输入要去的地方四、路线建议1.根据情况选择一条路线2.系统给出路线规划,点击【从我的位置出发】还可以从地图上看路线
类型:地图导航大小:29.1M语言:中文时间:评分:5.0
电脑版相关软件
手机版相关软件
04-1502-0502-0302-0302-0301-1501-0701-0512-1312-06
阅读本文后您有什么感想? 已有
人给出评价!
本类常用软件
名称大小下载
1 下载量:584308
2 下载量:433078
3 下载量:366977
4 下载量:365803
5 下载量:341030

参考资料

 

随机推荐