2013-02-12 103 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