高德地图说话导航怎么定位

首先打开高德地图开放平台(已经下载好的可以忽略上面几部,但如果是新工程key值一定要重新换,因为包名不一样);
具体申请key值可打开
下载完成后解压将jar包导入,然后在main中创建并导入,如下图
再根据相同步骤将定位的SDK也下载;
!!切记要将下载选好后,一次下载不要导入两个jar包,要不会冲突,本人血的教训,一天的总结
也将jar包导入;
然后在清单文件中配置:
&application
android:icon="@drawable/icon"
android:label="@string/app_name" &
&meta-data
android:name="com.amap.api.v2.apikey"
android:value="请输入您的用户Key"/&
&/application&
!!切记只从&meta_data开始粘贴,前面是为了告你位置
然后配置以下权限
&uses-permission android:name="android.permission.INTERNET" /&
&!--允许程序设置内置sd卡的写权限--&
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&
&!--允许程序获取网络状态--&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&
&!--允许程序访问WiFi网络信息--&
&uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&
&!--允许程序读写手机状态和身份--&
&uses-permission android:name="android.permission.READ_PHONE_STATE" /&
&!--用于进行网络定位--&
&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"&&/uses-permission&
&!--用于访问GPS定位--&
&uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"&&/uses-permission&
&!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--&
&uses-permission android:name="android.permission.CHANGE_WIFI_STATE"&&/uses-permission&
&!--用于读取手机当前的状态--&
&uses-permission android:name="android.permission.READ_PHONE_STATE"&&/uses-permission&
&!--用于申请调用A-GPS模块--&
&uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"&&/uses-permission&
&uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&
&uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /&
&uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /&
&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&
&!--用于访问GPS定位--&
&uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&
&!--获取运营商信息,用于支持提供运营商信息相关的接口--&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&
&!--用于访问wifi网络信息,wifi信息会用于进行网络定位--&
&uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&
&!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--&
&uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /&
&!--用于访问网络,网络定位需要上网--&
&uses-permission android:name="android.permission.INTERNET" /&
&!--用于读取手机当前的状态--&
&uses-permission android:name="android.permission.READ_PHONE_STATE" /&
&!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据--&
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&
为什么权限这么多?
然后在MainActivity中:
public class MainActivity extends AppCompatActivity implements LocationSource,AMapLocationListener {
private MapView mMapView = null;
AMapLocationClient mLocationC
AMapLocationClientOption mLocationO
OnLocationChangedListener mL
boolean isFirstLoc = true;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.map_view);
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理
mMapView.onCreate(savedInstanceState);
if (aMap == null) {
aMap = mMapView.getMap();
//设置显示定位按钮 并且可以点击
UiSettings settings = aMap.getUiSettings();
aMap.setLocationSource(this);//设置了定位的监听,这里要实现LocationSource接口
// 是否显示定位按钮
settings.setMyLocationButtonEnabled(true);
aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位,默认是flase
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听,这里要实现AMapLocationListener接口,AMapLocationListener接口只有onLocationChanged方法可以实现,用于接收异步返回的定位结果,参数是AMapLocation类型。
mLocationClient.setLocationListener(this);
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(false);
//设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(<span style="color: #00);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView.onResume (),实现地图生命周期管理
mMapView.onResume();
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView.onPause (),实现地图生命周期管理
mMapView.onPause();
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState)现地图生命周期管理
mMapView.onSaveInstanceState(outState);
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
if (aMapLocation.getErrorCode() == <span style="color: #) {
//定位成功回调信息,设置相关消息
aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表
aMapLocation.getLatitude();//获取纬度
aMapLocation.getLongitude();//获取经度
aMapLocation.getAccuracy();//获取精度信息
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(aMapLocation.getTime());
df.format(date);//定位时间
aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
aMapLocation.getCountry();//国家信息
aMapLocation.getProvince();//省信息
aMapLocation.getCity();//城市信息
aMapLocation.getDistrict();//城区信息
aMapLocation.getStreet();//街道信息
aMapLocation.getStreetNum();//街道门牌号信息
aMapLocation.getCityCode();//城市编码
aMapLocation.getAdCode();//地区编码
// 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置
if (isFirstLoc) {
//设置缩放级别
aMap.moveCamera(CameraUpdateFactory.zoomTo(<span style="color: #));
//将地图移动到定位点
aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude())));
//点击定位按钮 能够将地图的中心移动到定位点
mListener.onLocationChanged(aMapLocation);
//获取定位信息
StringBuffer buffer = new StringBuffer();
buffer.append(aMapLocation.getCountry() + ""
+ aMapLocation.getProvince() + ""
+ aMapLocation.getCity() + ""
+ aMapLocation.getProvince() + ""
+ aMapLocation.getDistrict() + ""
+ aMapLocation.getStreet() + ""
+ aMapLocation.getStreetNum());
Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show();
isFirstLoc = false;
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show();
public void activate(OnLocationChangedListener onLocationChangedListener) {
mListener = onLocationChangedL
public void deactivate() {
mListener = null;
最后需要一个布局显示地图
&com.amap.api.maps.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent" &
&/com.amap.api.maps.MapView&
地图就集成好了!
SimpleDateFormat包要第二个data要util的那个如果想查看具体配置的作用克查看本人笔记:
阅读(...) 评论()利用高德地图实现定位功能
最近学习使用高德地图可谓是出师不利。。。。嘛,不知道为啥高德给的3d地图的jar包用不了,最后实在没办法用了2d的jar包,然后在大佬和其他资料的帮助下,实现了高德地图的定位功能。接下来就说一下具体的步骤。
方法1:通过拷贝集成SDK1、拷贝 jar 文件至 libs 文件夹下将下载的定位 SDK jar 文件复制到工程(此处截图以官方示例Demo为例子)的 libs 目录下,如果有老版本定位 jar 文件存在,请删除。定位 SDK 无需 so 库文件支持。如图所示:2、配置 build.gradle 文件在 build.gradle 文件的 dependencies 中配置 compile fileTree(include: ['*.jar'], dir: 'libs')。方法2:通过Gradle集成SDK1、在Project的build.gradle文件中配置repositories,添加maven或jcenter仓库地址Android Studio默认会在Project的build.gradle为所有module自动添加jcenter的仓库地址,如果已存在,则不需要重复添加。Project的build.gradle文件在Project目录中位置如图所示:配置如下:allprojects {
repositories {
jcenter() // 或者 mavenCentral()
}2、在主工程的build.gradle文件配置dependencies根据项目需求添加SDK依赖。引入各个SDK功能最新版本, dependencies 配置方式如下:SDK引入代码3D地图compile
'com.amap.api:3dmap:latest.integration'2D地图compile 'com.amap.api:map2d:latest.integration'导航compile 'com.amap.api:navi-3dmap:latest.integration'搜索compile
'com.amap.api:search:latest.integration'定位compile 'com.amap.api:location:latest.integration'主工程的build.gradle文件在Project目录中位置:注意:千万别在Gradle里集成后再去add as library 会出现jar包重复的问题。还有测试一定要用真机。。一定要用真机。。一定要用真机。重要的事要说3遍。之前没用真机一直重复报一个看都看不懂的错,贼难受,结果插上真机还是能正常运行的。。。。
在下载并添加好高德所提供的jar包并添加依赖后我们就可以开始进行定位了。
public class MainActivity extends CheckPermissionsActivity implements LocationSource,AMapLocationListener{
private AMap aM
private MapView mapV
private AMapLocationClient mLocationClient=
private AMapLocationClientOption mLocationOption=
private OnLocationChangedListener mListener=
private boolean isFirstLoc=
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView=(MapView)findViewById(R.id.map);
mapView.onCreate(savedInstanceState);
if(aMap==null)
aMap=mapView.getMap();
UiSettings settings = aMap.getUiSettings();
aMap.setLocationSource(this);//设置了定位的监听,这里要实现LocationSource接口
// 是否显示定位按钮
settings.setMyLocationButtonEnabled(true);
aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位,默认是flase
MyLocationStyle myLocationStyle = new MyLocationStyle();
aMap.setMyLocationStyle(myLocationStyle);
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听,这里要实现AMapLocationListener接口,AMapLocationListener接口只有onLocationChanged方法可以实现,用于接收异步返回的定位结果,参数是AMapLocation类型。
mLocationClient.setLocationListener(this);
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
//设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(false);
//设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
if (aMapLocation.getErrorCode() == 0) {
//定位成功回调信息,设置相关消息
aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表
aMapLocation.getLatitude();//获取纬度
aMapLocation.getLongitude();//获取经度
aMapLocation.getAccuracy();//获取精度信息
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(aMapLocation.getTime());
df.format(date);//定位时间
aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
aMapLocation.getCountry();//国家信息
aMapLocation.getProvince();//省信息
aMapLocation.getCity();//城市信息
aMapLocation.getDistrict();//城区信息
aMapLocation.getStreet();//街道信息
aMapLocation.getStreetNum();//街道门牌号信息
aMapLocation.getCityCode();//城市编码
aMapLocation.getAdCode();//地区编码
// 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置
if (isFirstLoc) {
//设置缩放级别
aMap.moveCamera(CameraUpdateFactory.zoomTo(17));
//将地图移动到定位点
aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude())));
//点击定位按钮 能够将地图的中心移动到定位点
mListener.onLocationChanged(aMapLocation);
//获取定位信息
/*StringBuffer buffer = new StringBuffer();
buffer.append(aMapLocation.getCountry() + ""
+ aMapLocation.getProvince() + ""
+ aMapLocation.getCity() + ""
+ aMapLocation.getProvince() + ""
+ aMapLocation.getDistrict() + ""
+ aMapLocation.getStreet() + ""
+ aMapLocation.getStreetNum());
Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show();*/
isFirstLoc =
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show();
public void activate(OnLocationChangedListener onLocationChangedListener) {
mListener = onLocationChangedL
public void deactivate() {
mListener =
protected void onResume() {
super.onResume();
mapView.onResume();
protected void onPause() {
super.onPause();
mapView.onPause();
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
//mLocationClient.stopLocation();//停止定位
mLocationClient.onDestroy();//销毁定位客户端。
//销毁定位客户端之后,若要重新开启定位请重新New一个AMapLocationClient对象。
Androidmanifest:
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lenovo.mymap" &
&!--用于进行网络定位--&
&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/&
&!--用于访问GPS定位--&
&uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/&
&!--用于获取运营商信息,用于支持提供运营商信息相关的接口--&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&
&!--用于访问wifi网络信息,wifi信息会用于进行网络定位--&
&uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/&
&!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--&
&uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/&
&!--用于访问网络,网络定位需要上网--&
&uses-permission android:name="android.permission.INTERNET"/&
&!--用于读取手机当前的状态--&
&uses-permission android:name="android.permission.READ_PHONE_STATE"/&
&!--用于写入缓存数据到扩展存储卡--&
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&
&!--用于申请调用A-GPS模块--&
&uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/&
&!--用于申请获取蓝牙信息进行室内定位--&
&uses-permission android:name="android.permission.BLUETOOTH"/&
&uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/&
&application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar" &
&meta-data android:name="com.amap.api.v2.apikey" android:value="f7a523f80e43d197ef019aad4edeeec8"&
//开发者申请的key
&/meta-data&
&activity android:name=".MainActivity" &
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
&service android:name="com.amap.api.location.APSService"/&
&/application&
&/manifest&
这里我们用到了高德官网所提供的demo里申请权限的activity。
CheckPermissionsActivity:
public class CheckPermissionsActivity extends Activity {
* 需要进行检测的权限数组
protected String[] needPermissions = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE
private static final int PERMISSON_REQUESTCODE = 0;
* 判断是否需要检测,防止不停的弹框
private boolean isNeedCheck =
protected void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT &= 23
&& getApplicationInfo().targetSdkVersion &= 23) {
if (isNeedCheck) {
checkPermissions(needPermissions);
* @param permissions
* @since 2.5.0
private void checkPermissions(String... permissions) {
if (Build.VERSION.SDK_INT &= 23
&& getApplicationInfo().targetSdkVersion &= 23) {
List&String& needRequestPermissonList = findDeniedPermissions(permissions);
if (null != needRequestPermissonList
&& needRequestPermissonList.size() & 0) {
String[] array = needRequestPermissonList.toArray(new String[needRequestPermissonList.size()]);
Method method = getClass().getMethod("requestPermissions", new Class[]{String[].class,
int.class});
method.invoke(this, array, PERMISSON_REQUESTCODE);
} catch (Throwable e) {
* 获取权限集中需要申请权限的列表
* @param permissions
* @since 2.5.0
private List&String& findDeniedPermissions(String[] permissions) {
List&String& needRequestPermissonList = new ArrayList&String&();
if (Build.VERSION.SDK_INT &= 23
&& getApplicationInfo().targetSdkVersion &= 23){
for (String perm : permissions) {
Method checkSelfMethod = getClass().getMethod("checkSelfPermission", String.class);
Method shouldShowRequestPermissionRationaleMethod = getClass().getMethod("shouldShowRequestPermissionRationale",
String.class);
if ((Integer)checkSelfMethod.invoke(this, perm) != PackageManager.PERMISSION_GRANTED
|| (Boolean)shouldShowRequestPermissionRationaleMethod.invoke(this, perm)) {
needRequestPermissonList.add(perm);
} catch (Throwable e) {
return needRequestPermissonL
* 检测是否所有的权限都已经授权
* @param grantResults
* @since 2.5.0
private boolean verifyPermissions(int[] grantResults) {
for (int result : grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
@TargetApi(23)
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] paramArrayOfInt) {
if (requestCode == PERMISSON_REQUESTCODE) {
if (!verifyPermissions(paramArrayOfInt)) {
isNeedCheck =
}到此结束。。。。。ojbk。
高德地图全解析--定位篇
高德地图获取定位
实现APP定位功能
Android简单实现高德地图显示及定位
高德地图浏览器定位
高德地图定位
App中使用高德定位服务,少部分用户会反映定位不了
高德定位(问题)
没有更多推荐了,高德地图如何定位另外一个人的电话号码_百度知道
高德地图如何定位另外一个人的电话号码
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
多个安装了高德地图的设备间,是可以通过位置共享来显示个人所在位置的,但是不能定位其他人的位置。
楼主,没那功能!(*^__^*) 嘻嘻……
楼主好,高德地图暂时不支持此功能哦~
为您推荐:
其他类似问题
高德地图的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。IOS之高德地图显示出地图并定位成功
任务:显示地图在界面上并成功定位。
一:我们导入高德地图的API
platform :ios, &#39;7.0&#39;
target &你的项目名称& do
pod &#39;AMap3DMap&#39;
pod &AMapSearch&
pod &AMapLocation&
注意:target中 正确输入你自己的项目名称
cd 进项目文件夹 pod install 成功后进入下一步。
二:加载地图视图
在.h文件中
@interface MainPageVC : UIViewController
@property (nonatomic,strong)MAMapView *mapV
在.m文件中
- (void)ViewDidLoad{
[AMapServices sharedServices].enableHTTPS = YES;
_mapView = [[MAMapView alloc]initWithFrame:CGRectMake(0, self.navigationController.navigationBar.frame.size.height + [[UIApplication sharedApplication]statusBarFrame].size.height, self.view.frame.size.width, self.view.frame.size.height - (self.navigationController.navigationBar.frame.size.height + [[UIApplication sharedApplication]statusBarFrame].size.height))];
//delegate
[_mapView setDelegate:self];
//是否显示指南针
[_mapView setShowsCompass:YES];
//是否显示比例尺
[_mapView setShowsScale:YES];
//地图旋转
[_mapView setRotateEnabled:NO];
//地图倾斜
[_mapView setRotateCameraEnabled:NO];
//设置缩放级别
[_mapView setZoomLevel:15];
//是否显示用户位置
_mapView.showsUserLocation = YES;
//设置导航模式为跟随
_mapView.userTrackingMode = MAUserTrackingModeF
[self.view addSubview:_mapView];
至此,能够正确显示mapView了(不过显示的是北京的或者是你模拟器设置的坐标点的地方地图)
获取key值(从这个网页里获得):点击打开链接
https://lbs.amap.com/api/ios-location-sdk/guide/create-project/get-key
AppDelegate.m 中添加设置key值
@interface AppDelegate ()
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[AMapServices sharedServices].apiKey = @&987e1c858fb578f98b3c39e9516ecf96&;
return YES;
给定位权限:
在info.plist中添加这三个权限
Privacy - Location Always and When In Use Usage Description
Privacy - Location Always Usage Description
Privacy - Location When In Use Usage Description
在App Transport Security Settings 中添加Allow Arbitrary Loads 为 YES
- (void)location{
if([CLLocationManager locationServicesEnabled]){
AMapLocationManager *locationManager = [[AMapLocationManager alloc]init];
[locationManager setDelegate:self];
//是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。由于iOS限制,需要在定位未开始之前或定位停止之后,修改该属性的值才会有效果。
[locationManager setAllowsBackgroundLocationUpdates:NO];
//指定定位是否会被系统自动暂停。默认为NO。
[locationManager setPausesLocationUpdatesAutomatically:NO];
//设定定位的最小更新距离。单位米,默认为 kCLDistanceFilterNone,表示只要检测到设备位置发生变化就会更新位置信息
[locationManager setDistanceFilter:20];
//设定期望的定位精度。单位米,默认为 kCLLocationAccuracyBest
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
//开始定位服务
[locationManager startUpdatingLocation];

我要回帖

更多关于 黑客教你定位手机号码 的文章

 

随机推荐