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

Posted

技术标签:

【中文标题】如何使用 MapKit 中的名称搜索目的地?【英文标题】:How to search for a destination using name in MapKit? 【发布时间】:2015-04-28 04:08:17 【问题描述】:

我想使用 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];

【问题讨论】:

检查这个:***.com/questions/18563084/… 【参考方案1】:

您必须使用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];
    
];

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

【讨论】:

谢谢,约翰·罗杰斯。知道了。但是,搜索结果不如 google 提供的强大...有些搜索关键字会返回空地标。 Sam Vermette 创建了一个使用 Google 地理编码 API 的地理编码器。在这里查看:github.com/TransitApp/SVGeocoder

以上是关于如何使用 MapKit 中的名称搜索目的地?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MapKit (SwiftUI) 将工具提示添加到地图注释以在地图上显示位置名称

iphone sdk中mapkit中的路线信息

如何在 Swift 中使用 MapKit 在两个位置之间绘制路线?

MapKit 本地搜索以填充表格视图

如何启用 MapKit 楼层?

如何使用项目的其他值搜索 Vuetify 数据表