關于地圖定位

CoreLocation框架

一. iOS8.0之前的定位(?????)

  1. 前臺定位
    導入CoreLocation框架以及對應的主頭文件

import <CoreLocation/CoreLocation.h>

創(chuàng)建CLLocationManager對象并設置代理

 self.locationM = [[CLLocationManager alloc] init];
 self.locationM.delegate = self;
調用方法,開始更新用戶位置信息

 [self.locationM startUpdatingLocation];
在對應的代理方法中獲取位置信息

 -(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation > *)locations  
 {
     NSLog(@"每當請求到位置信息時, 都會調用此方法");  
 }
  1. 后臺定位
    在前臺定位基礎上, 勾選后臺模式Location updates image
  2. 額外設置
    每隔多少米定位一次

代碼: self.locationM.distanceFilter = 100;
功能: 只有當最新的位置與上一次獲取的位置之間的距離, 大于這個值時, 才會通過代理告訴外界
設置定位精確度

代 碼: self.locationM.desiredAccuracy = kCLLocationAccuracyBest;
功 能: 通過設置此屬性, 獲取不同精確度的位置信息
注意事項: 精確度越高,越耗電阱飘,定位所需時間越長
枚舉注解:
枚舉值 含義

kCLLocationAccuracyBestForNavigation    最適合導航
kCLLocationAccuracyBest 精度最好的
kCLLocationAccuracyNearestTenMeters 附近10米
kCLLocationAccuracyHundredMeters    附近100米
kCLLocationAccuracyKilometer    附近1000米
kCLLocationAccuracyThreeKilometers  附近3000米
  1. 知識補充

  2. 定位常識

    1. 標準定位服務(基于gps/基站/wifi定位, 具體使用哪種,蘋果有自己規(guī)則)

      程序關閉,就沒法獲取位置
      2) 顯著的位置變化定位服務(使用基站進行定位,所以必須要求設備有電話模塊)
      > 當app被完全關閉時,也可以接收到位置通知,并讓app進入到后臺處理
      > 定位精度相比于上面,精度不大,所以耗電小,而且定位更新頻率依據(jù)基站密度而定

  3. 應用場景

    1. 如果要求定位及時,精度較高,并且運行時間較短,可使用標準定位;
    2. 如果長時間監(jiān)控用戶位置,用戶移動速度比較快(例如打車軟件),可使用后者
  4. 測試環(huán)境:

  5. XCode7.0之前版本,例如XCode6.4版本

  6. 模擬器選擇iOS8.0之前的版本

    • 原因 : XCode7.0(包含7.0)之后不支持iOS8.0之前的模擬器
  7. 常見問題總結

  8. 定位不到, 對應的代理方法不執(zhí)行
    首先,檢查運行的模擬器是否是iOS8.0之前的系統(tǒng)版本
    其次,檢查模擬器是否設置位置數(shù)據(jù)
    第三,確保代碼無問題(一般都是代理沒有設置,或者位置管理器對象是局部變量,亦或是位置管理器對象沒有被強引用)
    第四,絕逼是模擬器BUG, 請重置模擬器(是重置,不是重啟)
    二. iOS8.0之后定位(?????)

  9. 前臺定位
    導入CoreLocation框架以及對應的主頭文件

 #import <CoreLocation/CoreLocation.h>
創(chuàng)建CLLocationManager對象并設置代理

 self.locationM = [[CLLocationManager alloc] init];
 self.locationM.delegate = self;
請求前臺定位授權, 并在Info.Plist文件中配置Key ( Nslocationwheninuseusagedescription )

 [self.locationM requestWhenInUseAuthorization];
調用方法,開始更新用戶位置信息

 [self.locationM startUpdatingLocation];
在對應的代理方法中獲取位置信息

 -(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation > *)locations  
 {
     NSLog(@"每當請求到位置信息時, 都會調用此方法");  
 }
  1. 后臺定位
    方案一:
    在前臺定位基礎上, 勾選后臺模式Location updates image
    注意:此時授權狀態(tài)如果是前臺定位, 那么當APP退到后臺時, 屏幕頂部會出現(xiàn)藍條
    方案二:
    請求前后臺定位授權,并在info.plist文件中配置KEY ( NSLocationAlwaysUsageDescription )

[self.locationM requestAlwaysAuthorization];
注意:不需要勾選后臺模式, 也可以進行后臺定位

注意:此時授權狀態(tài)如果是前后臺定位, 那么即使APP退到后臺時, 屏幕頂部會也不會出現(xiàn)藍條

  1. 監(jiān)聽用戶授權狀態(tài)
    實現(xiàn)以下代理方法即可

// 當用戶授權狀態(tài)發(fā)生變化時調用
-(void)locationManager:(nonnull CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
switch (status) {
// 用戶還未決定
case kCLAuthorizationStatusNotDetermined:
{
NSLog(@"用戶還未決定");
break;
}
// 訪問受限(蘋果預留選項,暫時沒用)
case kCLAuthorizationStatusRestricted:
{
NSLog(@"訪問受限");
break;
}
// 定位關閉時和對此APP授權為never時調用
case kCLAuthorizationStatusDenied:
{
// 定位是否可用(是否支持定位或者定位是否開啟)
if([CLLocationManager locationServicesEnabled])
{
NSLog(@"定位開啟缺脉,但被拒");
// 在此處, 應該提醒用戶給此應用授權, 并跳轉到"設置"界面讓用戶進行授權
// 在iOS8.0之后跳轉到"設置"界面代碼
NSURL *settingURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if([[UIApplication sharedApplication] canOpenURL:settingURL])
{
[[UIApplication sharedApplication] openURL:settingURL];
}
}else
{
NSLog(@"定位關閉,不可用");
}
break;
}
// 獲取前后臺定位授權
case kCLAuthorizationStatusAuthorizedAlways:
// case kCLAuthorizationStatusAuthorized: // 失效震糖,不建議使用
{
NSLog(@"獲取前后臺定位授權");
break;
}
// 獲得前臺定位授權
case kCLAuthorizationStatusAuthorizedWhenInUse:
{
NSLog(@"獲得前臺定位授權");
break;
}
default:
break;
}
}

  1. 測試環(huán)境:
  2. XCode版本無要求
  3. 模擬器選擇iOS8.0之后的版本
  4. 常見問題總結
  5. 定位不到, 對應的代理方法不執(zhí)行
    首先,檢查是否請求授權, 并設置了對應的KEY
    其次,檢查模擬器是否設置位置數(shù)據(jù)
    第三,確保代碼無問題(一般都是代理沒有設置,或者位置管理器對象是局部變量,亦或是位置管理器對象沒有被強引用)
    第四,絕逼是模擬器BUG, 請重置模擬器(是重置,不是重啟)
    三. iOS9.0 定位補充(???)
  6. 定位變化
  • 前臺定位
    (同iOS8.0之后一致, 無任何變化, 都需要主動請求授權)
  • 后臺定位
    方案一:
    在前臺定位基礎上, 勾選后臺模式Location updates, 并且設置以下屬性為YES

if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0)
{
self.locationM.allowsBackgroundLocationUpdates = YES;
}
方案二:
請求前后臺定位授權,并在info.plist文件中配置KEY ( NSLocationAlwaysUsageDescription )

[self.locationM requestAlwaysAuthorization];

  1. 新的API
    單次定位請求;

代 碼: [self.locationM requestLocation];
功 能: 獲取一次位置信息
實現(xiàn)邏輯:
(1) 按照定位精確度從低到高進行排序,逐個進行定位.如果在有效時間內, 定位到了精確度最好的位置, 那么就把對應的位置通過代理告知外界.
(2) 如果獲取到的位置不是精確度最高的那個糟趾,也會在定位超時后踊淳,通過代理告訴外界.
注意事項:
(1) 必須實現(xiàn)代理的-locationManager:didFailWithError:方法
(2) 不能與startUpdatingLocation方法同時使用

  1. 測試環(huán)境:
  2. XCode版本要求7.0版本以上
  3. 模擬器選擇iOS9.0之后的版本
  4. 常見問題總結
  5. 單次定位在模擬器上測試不出效果?
    答: 因為模擬器的位置是固定的, 所以無法測試出效果, 請使用真機進行測試.
    四. CLLocation對象詳解(?????)
  6. 屬性解釋

    coordinate : 當前位置所在的經(jīng)緯度數(shù)據(jù)
    altitude : 海拔
    speed : 當前速度
    course : 航向(設備移動的方向, 值域范圍:0.0 ~ 259.9, 正北方向為0.0)

  7. 重要方法
    代碼: - (CLLocationDistance)distanceFromLocation:(CLLocation *)location
    作用: 計算兩個位置對象之間的物理距離, 單位是(米)
  8. 場景演練
  9. 場景演示:打印當前用戶的行走方向,偏離角度以及對應的行走距離,
    例如:”北偏東30度方向,移動了8米”
  10. 實現(xiàn)步驟:
    1> 獲取對應的方向偏向(例如”正東”,”東偏南”)
    2> 獲取對應的偏離角度(并判斷是否是正方向)
    3> 計算行走距離
    4> 打印信息
  11. 注意事項
    使用位置前, 務必判斷當前獲取的位置是否有效

代碼: if (location.horizontalAccuracy < 0) return;
功能: 如果水平精確度小于零, 代表雖然可以獲取位置對象, 但是數(shù)據(jù)錯誤, 不可用

  • 經(jīng)驗小結
    一. 定位的應用場景

    1. 導航
    2. 電商APP,獲取用戶所在城市(需要與(反)地理編碼聯(lián)合使用)
    3. 數(shù)據(jù)采集用戶信息(例如,統(tǒng)計app使用分布)
    4. 查找周邊(周邊好友, 周邊商家等等)
      二. 開發(fā)經(jīng)驗
      由于定位非常耗電; 所以為了給用戶省電, 你可以遵守以下小經(jīng)驗

    1)不需要獲取用戶位置時,一定要關閉定位服務:
    2)如果能滿足項目需求,盡可能的使用”監(jiān)聽顯著位置變化”的定位服務(打車app)
    3)如果可以,盡可能使用低精度的desiredAccuracy
    4)如果是數(shù)據(jù)采集,(一般都是周期性的去輪詢用戶位置),在輪詢期間一定要關閉定位
    五. 指南針效果實現(xiàn)(??)

  1. 實現(xiàn)思路
    利用"磁力計"傳感器,獲取設備朝向
    根據(jù)設備朝向反向旋轉"指南針"圖片
  2. 代碼實現(xiàn)
    獲取設備朝向
  1. 導入CoreLocation框架以及對應的主頭文件

    import <CoreLocation/CoreLocation.h>

  2. 創(chuàng)建CLLocationManager對象并設置代理
    self.locationM = [[CLLocationManager alloc] init];
    self.locationM.delegate = self;

  3. 調用方法, 開始獲取設備朝向
    [self.locationM startUpdatingHeading];

  4. 在對應的代理方法中獲取設備朝向信息
    -(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
    {
    // 旋轉圖片代碼
    }
    旋轉圖片

// 1.判斷當前的角度是否有效(如果此值小于0,代表角度無效)
if(newHeading.headingAccuracy < 0)
return;

// 2.獲取當前設備朝向(磁北方向)
CGFloat angle = newHeading.magneticHeading;

// 3.轉換成為弧度
CGFloat radian = angle / 180.0 * M_PI;

// 4.帶動畫反向旋轉指南針
[UIView animateWithDuration:0.5 animations:^{
self.compassView.transform = CGAffineTransformMakeRotation(-radian);
}];

  1. 概念補充
    磁北角度: newHeading.magneticHeading ------- 相對于"磁北方向"產(chǎn)生的角度
    真北角度: newHeading.trueHeading ------- 相對于"真北方向"產(chǎn)生的角度
  2. 注意事項
    1. 獲取設備朝向前, 先判斷"磁力計"是否可用
      [CLLocationManager headingAvailable];

    2. 獲取朝向前, 判斷當前朝向信息是否有效
      if(newHeading.headingAccuracy < 0) return;

    3. 注意與"航向"的區(qū)別
      設備朝向是指手機的朝向; "航向"可以理解為設備的移動方向

    4. 使用"磁力計"傳感器獲取設備朝向, 不需要請求用戶授權
      因為設備朝向不涉及用戶隱私
      5.測試環(huán)境

    5. XCode版本無要求(建議:XCode7.0不需要開發(fā)者賬號也可以進行真機調試)

    6. 必須要求真機設備(只有真機設備才有"磁力計"傳感器)
      六. 區(qū)域監(jiān)聽(???)
      1.概念解釋
      區(qū) 域 : 就是指劃定的一塊地域范圍(比如圓形區(qū)域, 則由區(qū)域中心, 和半徑組成)
      區(qū)域監(jiān)聽 : 是指,我們通過代碼指定一個區(qū)域, 然后當用戶持握設備進入或者離開指定區(qū)域, 我們都能監(jiān)聽到.

  3. 監(jiān)聽指定區(qū)域
    導入CoreLocation框架以及對應的主頭文件
 #import <CoreLocation/CoreLocation.h>
創(chuàng)建CLLocationManager對象并設置代理

 self.locationM = [[CLLocationManager alloc] init];
 self.locationM.delegate = self;
請求前后臺定位, 或前臺定位授權, 并在Info.Plist文件中配置相應的Key

 [self.locationM requestAlwaysAuthorization];
 // [self.locationM requestWhenInUseAuthorization]; 
創(chuàng)建一個區(qū)域, 并開始監(jiān)聽

 // 1. 判斷區(qū)域監(jiān)聽服務是否可用(定位服務是否關閉, 定位是否授權, 是否開啟飛行模式)
 if ([CLLocationManager isMonitoringAvailableForClass:[CLCircularRegion class]]) 
 {

     // 創(chuàng)建區(qū)域中心
     CLLocationCoordinate2D center = CLLocationCoordinate2DMake(29.12345, 131.23456);

     // 創(chuàng)建區(qū)域(指定區(qū)域中心,和區(qū)域半徑)
     CLLocationDistance radius = 1000;

     // 判斷區(qū)域半徑是否大于最大監(jiān)聽區(qū)域半徑,如果大于, 就沒法監(jiān)聽
     if (radius > self.locationM.maximumRegionMonitoringDistance) {
         radius = self.locationM.maximumRegionMonitoringDistance;
     }
     CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:center radius:radius identifier:@"小碼哥"];

     // 開始監(jiān)聽指定區(qū)域
     [self.locationM startMonitoringForRegion:region];
 }
 else
 {
     NSLog(@"區(qū)域監(jiān)聽不可用");
 }
在對應的代理方法中監(jiān)聽區(qū)域狀態(tài)

 // 進去監(jiān)聽區(qū)域后調用(調用一次)
 -(void)locationManager:(nonnull CLLocationManager *)manager didEnterRegion:(nonnull CLRegion *)region
 {
     NSLog(@"進入?yún)^(qū)域---%@", region.identifier);
     [manager stopMonitoringForRegion:region];
 }

 // 離開監(jiān)聽區(qū)域后調用(調用一次)
 -(void)locationManager:(nonnull CLLocationManager *)manager didExitRegion:(nonnull CLRegion *)region
 {
     NSLog(@"離開區(qū)域---%@", region.identifier);
 }
  1. 獲取某個區(qū)域的當前狀態(tài)
    監(jiān)聽某個區(qū)域時, 只有進入或者離開這個區(qū)域時, 才能回調對應的方法, 是一個進入或者離開的動作 如果想知道某一個區(qū)域的當前狀態(tài)(識別用戶是在區(qū)域內部, 還是區(qū)域外部), 則需要使用以下方法
    [self.locationM requestStateForRegion:region];
回調代理: 
    // 請求某個區(qū)域狀態(tài)時, 回調的代理方法
    -(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
    switch (state) {
        case CLRegionStateUnknown:
            NSLog(@"未知狀態(tài)");
            break;
        case CLRegionStateInside:
            NSLog(@"在區(qū)域內部");
            break;
        case CLRegionStateOutside:
            NSLog(@"在區(qū)域外部");
            break;
        default:
         break;
    }
}
  1. 測試環(huán)境
    XCode版本無要求
    iOS模擬器版本無要求

  2. 注意事項

  3. 想要做區(qū)域監(jiān)聽, 在iOS8.0之后, 必須請求位置授權
    代碼: [self.locationM requestAlwaysAuthorization];
    原因: 區(qū)域監(jiān)聽的原理就是獲取用戶的位置, 然后在判斷該位置是否在制定區(qū)域內, 所以會涉及到用戶隱私(位置), 而在iOS8.0之后, 想要訪問用戶位置信息, 就需要主動請求授權;

  4. 使用前, 先判斷區(qū)域監(jiān)聽是否可用
    代碼: [CLLocationManager isMonitoringAvailableForClass:[CLCircularRegion class]]

  5. 注意區(qū)域半徑是否大于最大區(qū)域監(jiān)聽半徑(如果大于, 則無法監(jiān)聽成功)
    代碼: radius > self.locationM.maximumRegionMonitoringDistance

  6. 常見問題

  7. 區(qū)域監(jiān)聽, 測試沒有效果?
    首先, 確定代碼沒有問題, 是否有請求授權;
    其次, 嘗試修改模擬器位置信息, 觸發(fā)進入?yún)^(qū)域或離開區(qū)域的動作
    第三, 如果模擬器出現(xiàn)BUG, 定位不到, 也會無法判定當前區(qū)域狀態(tài); 所以, 最后可以嘗試重置模擬器.
    七. (反)地理編碼(?????)

  8. 概念解釋
    地理編碼: 是指根據(jù)地址關鍵字, 將其轉換成為對應的經(jīng)緯度等信息;
    發(fā)地理編碼: 是指根據(jù)經(jīng)緯度信息, 將其轉換成為對應的省市區(qū)街道等信息;

  9. 地理編碼
    導入CoreLocation框架以及對應的主頭文件

import <CoreLocation/CoreLocation.h>

創(chuàng)建CLGeocoder對象

self.geoC = [[CLGeocoder alloc] init];
根據(jù)地址關鍵字, 進行地理編碼

// 直接根據(jù)地址進行地理編碼(返回結果可能有多個镶苞,因為一個地點有重名)
[self.geoC geocodeAddressString:@"廣州" completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error)
{
// 包含區(qū)喳坠,街道等信息的地標對象
CLPlacemark *placemark = [placemarks firstObject];
// 城市名稱
NSString *city = placemark.locality;
// 街道名稱
NSString *street = placemark.thoroughfare;
// 全稱
NSString *name = placemark.name;
}];

  1. 反地理編碼
    導入CoreLocation框架以及對應的主頭文件

import <CoreLocation/CoreLocation.h>

創(chuàng)建CLGeocoder對象

self.geoC = [[CLGeocoder alloc] init];
根據(jù)經(jīng)緯度信息, 進行反地理編碼

// 根據(jù)經(jīng)緯度信息進行反地理編碼
[self.geoC reverseGeocodeLocation:[[CLLocation alloc] initWithLatitude:21.123 longitude:123.345] completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error)
{
// 包含區(qū),街道等信息的地標對象
CLPlacemark *placemark = [placemarks firstObject];
// 城市名稱
NSString *city = placemark.locality;
// 街道名稱
NSString *street = placemark.thoroughfare;
// 全稱
NSString *name = placemark.name;
}];

  1. CLPlacemark 地標對象詳解
    location : CLLocation 類型, 位置對象信息, 里面包含經(jīng)緯度, 海拔等等
    region : CLRegion 類型, 地標對象對應的區(qū)域
    addressDictionary : NSDictionary 類型, 存放街道,省市等信息
    name : NSString 類型, 地址全稱
    thoroughfare : NSString 類型, 街道名稱
    locality : NSString 類型, 城市名稱
    administrativeArea : NSString 類型, 省名稱
    country : NSString 類型, 國家名稱
  2. 測試環(huán)境
  • 必須聯(lián)網(wǎng)
    XCode版本不限
    iOS模擬器系統(tǒng)版本不限
  1. 常見問題
  2. 測試無數(shù)據(jù)?
    首先, 檢查是否有聯(lián)網(wǎng);
    其次, 如果是反地理編碼,可嘗試更換經(jīng)緯度再次嘗試, 有的經(jīng)緯度沒有對應信息
  3. 應用場景
  4. 一般與定位結合使用, 確定當前位置的具體地理信息
    八. 使用第三方框架進行定位(??)
  5. 主要原因
    因為使用CoreLocation框架進行獲取用戶位置信息, 是通過代理進行回調; 而第三方框架將"代理模擬"轉換成為"block模式"; 使用起來比較方便, 而且額外增加了超時時間等功能.
  6. 框架信息
    名稱: locationManager
    地址: link
  7. 使用方法
    參照該框架對應的 readME
  8. 注意事項
    一般集成第三方框架到項目中, 請先確保該框架沒有問題, 然后再向項目中集成
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末宾尚,一起剝皮案震驚了整個濱河市丙笋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌煌贴,老刑警劉巖御板,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異牛郑,居然都是意外死亡怠肋,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門淹朋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笙各,“玉大人,你說我怎么就攤上這事础芍¤厩溃” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵仑性,是天一觀的道長惶楼。 經(jīng)常有香客問我,道長诊杆,這世上最難降的妖魔是什么歼捐? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮晨汹,結果婚禮上豹储,老公的妹妹穿的比我還像新娘。我一直安慰自己淘这,他們只是感情好剥扣,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著慨灭,像睡著了一般朦乏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氧骤,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天呻疹,我揣著相機與錄音,去河邊找鬼筹陵。 笑死刽锤,一個胖子當著我的面吹牛,可吹牛的內容都是我干的朦佩。 我是一名探鬼主播并思,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼语稠!你這毒婦竟也來了宋彼?” 一聲冷哼從身側響起弄砍,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎输涕,沒想到半個月后音婶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡莱坎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年衣式,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檐什。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡碴卧,死狀恐怖,靈堂內的尸體忽然破棺而出乃正,到底是詐尸還是另有隱情住册,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布瓮具,位于F島的核電站界弧,受9級特大地震影響,放射性物質發(fā)生泄漏搭综。R本人自食惡果不足惜垢箕,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兑巾。 院中可真熱鬧条获,春花似錦、人聲如沸蒋歌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堂油。三九已至修档,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間府框,已是汗流浹背吱窝。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迫靖,地道東北人院峡。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像系宜,于是被迫代替她去往敵國和親照激。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內容

  • 簡介 在移動互聯(lián)網(wǎng)時代盹牧,移動app能解決用戶的很多生活瑣事俩垃,比如 周邊:找餐館励幼、找KTV、找電影院等等 導航:根據(jù)...
    JonesCxy閱讀 1,200評論 1 1
  • 片頭曲 CoreLocation框架 來自520it.com 一. iOS8.0之前的定位(?????) 1. 前...
    人生路02閱讀 346評論 0 1
  • 一. iOS8.0之前的定位(?????) 1. 前臺定位 導入CoreLocation框架以及對應的主頭文件 #...
    走道牙的人閱讀 238評論 0 0
  • 9月7日口柳,周三赏淌。早上七點,我準時到校啄清,經(jīng)過樓下衛(wèi)生區(qū)時看到劉紫靜一個人在打掃衛(wèi)生,她說另外幾個同學剛到教室...
    匆匆十年閱讀 307評論 0 2
  • 風漸起 距離吹的好遠 雨滴答 思念浸的凌亂 我終于 攢夠了失望 你終究 變成了路人 深夜里 星光閃爍 忽明忽暗 塵...
    Iase小文閱讀 149評論 0 0