興趣是最好的老師,這句話一點(diǎn)沒錯(cuò)宾茂,先從感興趣的來(lái)吧瓷马。
模擬定位,當(dāng)時(shí)倒騰這個(gè)讓我第一次感覺到程序猿的驕傲與開心刻炒,能讓自己獲利决采,無(wú)疑是最有價(jià)值的。
這個(gè)也是借鑒別人的坟奥,不過(guò)能夠找到方法并學(xué)以致用也算是收獲咯树瞭,搜集整理,本身我理解的寫程序就是copy代碼的過(guò)程爱谁,組合成什么樣就各顯神通了晒喷。
翻了翻記這個(gè)筆記的時(shí)間:2018年11月23日,好久遠(yuǎn)访敌,“只記錄不回顧”的詬病大概是從上學(xué)時(shí)候就養(yǎng)成了凉敲,如同考試時(shí)候老覺得自己本子上記過(guò)這個(gè)知識(shí)點(diǎn),但僅僅是記錄了。爷抓。势决。沒什么卵用。蓝撇。果复。??????。渤昌。虽抄。
溫故而知新,嗯独柑,有點(diǎn)道理迈窟。
下面羅列下步驟咯,安利給過(guò)好幾個(gè)小伙伴忌栅,筆記記了一大堆车酣,卻沒想過(guò)寫博客,大寫的服索绪。
畢竟我是做iOS開發(fā)的骇径,順序嘛就iOS、安卓一個(gè)個(gè)來(lái)了(當(dāng)時(shí)想要也給用安卓手機(jī)的朋友們福利來(lái)著者春,亦研究了一番)破衔。
一、iOS(mac钱烟、數(shù)據(jù)線一根晰筛、蘋果手機(jī)、xcode):
連接真機(jī)運(yùn)行代碼拴袭,此舉將修改手機(jī)定位读第,直接拔線可保留該定位,使用其他帶有地圖定位軟件均顯示此定位拥刻,可重啟手機(jī)恢復(fù)定位(此定位保留時(shí)間不固定怜瞒,使用其他定位軟件可能導(dǎo)致此定位失效,如不常用其它定位軟件般哼,親測(cè)可保留一周+)吴汪。
二、安卓(任意系統(tǒng)電腦一臺(tái)蒸眠、模擬器)漾橙;
一、iOS(mac楞卡、數(shù)據(jù)線一根霜运、iphone脾歇、xcode):
github地址:https://github.com/xiaopangzai/SimulatorLocation
1、新建一項(xiàng)目淘捡,新建gpx文件藕各,修改其中經(jīng)緯度,經(jīng)緯度可使用高德開放平臺(tái)焦除、百度拾取坐標(biāo):
拾取坐標(biāo)(經(jīng)驗(yàn)證百度比較精準(zhǔn)座韵,可自行對(duì)比參考):
百度:http://api.map.baidu.com/lbsapi/getpoint/index.html
高德開放平臺(tái):https://lbs.amap.com/console/show/picker
2、ViewController.m導(dǎo)入定位相關(guān)代碼踢京,以打印相關(guān)定位信息,驗(yàn)證是否準(zhǔn)確:
#import "ViewController.h"
#import "SSYLocationChanged.h"
@interface ViewController ()<CLLocationManagerDelegate>
@property (nonatomic, strong)CLLocationManager *locationManager;
@end
@implementation ViewController
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? _locationManager =[[CLLocationManager alloc]init];
? ? _locationManager.delegate =self;
? ? //設(shè)置定位經(jīng)準(zhǔn)
? ? _locationManager.desiredAccuracy =kCLLocationAccuracyNearestTenMeters;
? ? [_locationManager requestWhenInUseAuthorization];//否則宦棺,ios10不彈定位框
? ? _locationManager.distanceFilter =10.0f;
? ? //開始定位
? ? [_locationManager startUpdatingLocation];
? ? // Do any additional setup after loading the view.
}
//定位代理經(jīng)緯度回調(diào)
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
? ? CLLocation *newLocation =locations[0];
? ? CLLocationCoordinate2D oCoordinate =newLocation.coordinate;
? ? [_locationManager stopUpdatingLocation];
? ? NSLog(@"經(jīng)度------%f\n------緯度%f",oCoordinate.longitude,oCoordinate.latitude);
? ? //創(chuàng)建地理位置解碼編碼器對(duì)象
? ? CLGeocoder *geoCoder =[[CLGeocoder alloc]init];
? ? [geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
? ? ? ? for (CLPlacemark *place in placemarks) {
? ? ? ? ? ? NSLog(@"城市-----%@",place.locality);
? ? ? ? }
? ? }];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
? ? if ([error code] == kCLErrorDenied){
? ? ? ? //訪問被拒絕
? ? ? ? NSLog(@"訪問被拒絕");
? ? }
? ? if ([error code] == kCLErrorLocationUnknown) {
? ? ? ? //無(wú)法獲取位置信息
? ? ? ? NSLog(@"無(wú)法獲取位置信息");
? ? }
}
@end
3瓣距、因上一步驟涉及定位,遂需設(shè)置info.plist相關(guān)權(quán)限:
4代咸、模擬器定位選擇所創(chuàng)建的Location文件:
5蹈丸、連接真機(jī)運(yùn)行即可,此舉將修改手機(jī)定位呐芥,直接拔線可保留該定位逻杖,使用其他帶有地圖定位軟件均顯示此定位,可重啟手機(jī)恢復(fù)定位(此定位保留時(shí)間不固定思瘟,使用其他定位軟件可能導(dǎo)致此定位失效荸百,如不常用其它定位軟件,親測(cè)可保留一周+)滨攻;
二够话、安卓(任意系統(tǒng)電腦一臺(tái)、模擬器):
1光绕、下載相應(yīng)系統(tǒng)版本的夜神模擬器(以mac系統(tǒng)為例):http://www.itmop.com/downinfo/259093.html
2女嘲、打開模擬器,找到左上角虛擬定位圖標(biāo)诞帐,選擇模擬位置所使用的地圖欣尼,輸入模擬位置的經(jīng)緯度,點(diǎn)擊“go”停蕉,地圖即可顯示該位置愕鼓,點(diǎn)擊右下角的“定位到這里”,定位工具下方顯示“已定位”慧起,即表示模擬器成功模擬地點(diǎn)拒啰,這時(shí)可以點(diǎn)擊右上角“關(guān)閉”按鈕隐锭。
下載釘釘督惰,登錄窖壕,打卡界面即展示該定位。
(因模擬器打開失敗拧咳,暫無(wú)截圖,可按步驟自行嘗試)