2013-02-12 74 views
2

所以我一直在尋找這一點,我似乎無法找到任何解決方案。我試圖在iOS應用中使用CLGeocoder來查找用戶在地圖上長按的最近城市。我有兩個主要問題:使用CLGeocoder查找最近的城市

  1. 即使用戶是非常縮小,並且用戶輕敲說,紐約(這是他們打算),因爲地圖是如何縮小是,CLGeocoder經常返回而不是紐約的更明顯的答案。我無法解決如何設置搜索的「模糊性」來克服這個問題。
  2. 在許多情況下,City字段在返回的地標對象中爲空,最常見於偏遠地區,如沙漠或海洋。在這種情況下,我想理想地找到最接近的對象,實際上有City定義,但不能解決如何做到這一點。
+0

爲了澄清獲取您的位置的所有細節,我做了一些更多的測試,它似乎沒有蘋果地圖或谷歌地圖iOS版解決這個問題。兩者都會爲丟棄的針腳提供針對街道的特定地址,即使縮小到目前爲止您無法定位到街道。 – 2013-02-13 01:44:58

回答

0

對於使用CLGeocoder

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    [currentLocation stopUpdatingLocation]; 

    CLLocation *myLocation = [[CLLocation alloc] initWithLatitude:latitudeValue longitude:longitudeValue]; 


    CLGeocoder * geoCoder = [[CLGeocoder alloc] init]; 

    [geoCoder reverseGeocodeLocation:myLocation completionHandler:^(NSArray *placemarks, NSError *error) { 

     if(!error) 
     { 
      for (CLPlacemark * placemark in placemarks) 
      { 
       NSLog(@"placemark.ISOcountryCode %@",placemark.ISOcountryCode); 
       NSLog(@"placemark.country %@",placemark.country); 
       NSLog(@"placemark.postalCode %@",placemark.postalCode); 
       NSLog(@"placemark.administrativeArea %@",placemark.administrativeArea); 
       NSLog(@"placemark.locality %@",placemark.locality); 
       NSLog(@"placemark.subLocality %@",placemark.subLocality); 
       NSLog(@"placemark.subThoroughfare %@",placemark.subThoroughfare); 

      } 

     } 
     else 
     { 
      NSLog(@"failed getting city: %@", [error description]); 
     } 

    }]; 


} 
+2

謝謝,但你誤解了我的問題。我有CLGeocoder運作良好,我只是想知道如何管理找到最近的城市,而不是一個城鎮或地區。 – 2013-02-13 01:43:32

相關問題