2016-11-29 2 views
3

In meiner Anwendungssuche mit der Standortzeichenfolge gibt es das Ergebnis 5 zurück, das jedoch nicht mit der Standardgerätekarten-App übereinstimmt.Apple CLGeocoder, MKLocalSearch-Ergebnis weichen vom Gerätekartenergebnis ab

meinen Code 1: CLGeocoder

CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
[geocoder geocodeAddressString:searchKey completionHandler:^(NSArray* placemarks, NSError* error){ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     if (placemarks.count > 0) { 
      searchLocations = placemarks; 
     } else { 
      searchLocations = nil; 
     } 
     [searchTableView reloadData]; 

     for (CLPlacemark *placemark in placemarks) { 
      NSLog(@"place dic %@",placemark.addressDictionary); 
     } 
    }); 
}]; 

Code 2: MKLocalSearch

CLLocation *userLoc = (CLLocation *)[[MYLocationManager defaultManager] currentLocation]; 
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init]; 
request.region = MKCoordinateRegionMakeWithDistance(userLoc.coordinate, 100000, 100000); 
request.naturalLanguageQuery = searchKey; 
MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request]; 
[search startWithCompletionHandler:^(MKLocalSearchResponse * _Nullable response, NSError * _Nullable error) { 
    NSMutableArray *locs = [[NSMutableArray alloc]init]; 
    for (MKMapItem *placeM in response.mapItems) { 
     [locs addObject:placeM.placemark]; 
    } 
    if (locs.count > 0) { 
     searchLocations = locs; 
    } else { 
     searchLocations = nil; 
    } 


    dispatch_async(dispatch_get_main_queue(), ^{ 
    [searchTableView reloadData]; 
    }); 
}]; 

Beide sind gleiche Ergebnis zurück CLGeocoder result

Geräte Karte App Ergebnis:

DEvice map result

Das Gerätekartenergebnis unterscheidet sich von den codierten Geo-Ergebnissen. bitte helfen Sie das zu lösen. und meine Frage ist, welche Art von Suchmethodik verwenden die Standard-Kartenanwendung? und wie bekomme ich das gleiche Ergebnis in der Codierung?

Antwort

0

Bitte beziehen Sie sich this Antwort. Es beschreibt alle erforderlichen Schritte, um das obige Ergebnis zu replizieren. Ich habe das am Simulator getestet.

Verwandte Themen