2015-12-07 42 views
2

我正在使用iOS MapView。每當我搜索一個地方時,它都會給出令人驚訝的錯誤結果。Mapview顯示錯誤的搜索結果

如果我搜索'必勝客',它會帶我去日本。如果我尋找拉爾巴格,它會把我帶到比哈爾的巴特那。對於UB城市來說,需要我到美國

你能幫我嗎?

以下是要搜索的代碼。

_geocoder = [[CLGeocoder alloc] init]; 
      [_geocoder geocodeAddressString:textField.text completionHandler:^(NSArray *placemarks, NSError *error) { 
       //Error checking 
       [Utility hideProgressHUD]; 
       CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
       MKCoordinateRegion region; 
       region.center = [(CLCircularRegion *)placemark.region center]; 
//    region.center.latitude = placemark.region.center.latitude; 
//    region.center.longitude = placemark.region.center.longitude; 
       MKCoordinateSpan span; 
       double radius = [(CLCircularRegion *)placemark.region radius]/1000; // convert to km 

       NSLog(@"[searchBarSearchButtonClicked] Radius is %f", radius); 
       span.latitudeDelta = radius/112.0; 

       region.span = span; 

       [_mapView setRegion:region animated:YES]; 
      }]; 

回答

0

試試這個,

NSString *location = @"some address, state, and zip"; 
    CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
       [geocoder geocodeAddressString:location 
        completionHandler:^(NSArray* placemarks, NSError* error){ 
         if (placemarks && placemarks.count > 0) { 
          CLPlacemark *topResult = [placemarks objectAtIndex:0]; 
          MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult]; 

          MKCoordinateRegion region = self.mapView.region; 
          region.center = placemark.region.center; 
          region.span.longitudeDelta /= 8.0; 
          region.span.latitudeDelta /= 8.0; 

          [self.mapView setRegion:region animated:YES]; 
          [self.mapView addAnnotation:placemark]; 
         } 
        } 
       ]; 

我上面的代碼中,在iOS8上工作的罰款對我來說我的應用程序之一使用。

+0

可以工作,但我們不能要求用戶搜索相同的模式。用戶只需鍵入一個位置。順便說一下,有多少郵編準確記得任何人? –

+0

在這種情況下,您可以避免給郵政編碼,並嘗試使用街道名稱或特定區域,它會爲你工作,但給郵政編碼可以幫助'geocoder'找到更準確的結果。 –

+0

從最終用戶的角度思考。作爲一個普通用戶,沒有人會搜索街道名稱,州,國家或任何其他地方。他只會搜索關鍵字。如果用戶想要搜索「咖啡日」,該怎麼辦?他只會說咖啡日。他不會提到任何街道。用戶的意圖是搜索接近他當前位置的Coffee Days。 –