如何在 MapKit 中使用名称搜索目的地?

How to search for a destination using name in MapKit?

我想使用 MapKit 中的名称搜索目的地并获取经度和纬度 (CLLocationCoordinate2D)。

目前我正在使用硬编码值来设置目的地。

    // Make a directions request
    MKDirectionsRequest *directionsRequest = [MKDirectionsRequest new];

    // Start at our current location
    MKMapItem *source = [MKMapItem mapItemForCurrentLocation];
    [directionsRequest setSource:source];

    // Make the destination --> I WANT TO GET THIS COORDINATE USING NAME
    CLLocationCoordinate2D destinationCoords = CLLocationCoordinate2DMake(45.545824, 9.327515);
    MKPlacemark *destinationPlacemark = [[MKPlacemark alloc] initWithCoordinate:destinationCoords addressDictionary:nil];
    MKMapItem *destination = [[MKMapItem alloc] initWithPlacemark:destinationPlacemark];
    [directionsRequest setDestination:destination];

您必须使用 CLGeocoderforward-geocode 使用地址:

CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:@"New York City" completionHandler:^(NSArray *placemarks, NSError *error) {
    if (error) {
        NSLog(@"%@", error);
    } else {
        CLPlacemark *placemark = [placemarks lastObject];
        MKCoordinateRegion region;
        region.center.latitude = placemark.location.coordinate.latitude;
        region.center.longitude = placemark.location.coordinate.longitude;
        [self.mapView setRegion:region animated:YES];
    }
}];

这会将地图的区域设置为返回的位置,使用纬度和经度作为中心。