iOS 10 NSUserActivity, предложения по расположению — MKMapItem не отображается на картах

Я пытаюсь сделать так, чтобы предложения мест отображались на Apple Maps в списке под заголовком «Куда вы хотите пойти?». NSUserActivity в iOS 10 теперь имеет свойство mapItem, и я устанавливаю его с помощью MKMapItem, который я создаю из MKPlacemark, который я сделал с географическими координатами и названием места.

Название места не появляется, когда я захожу в Карты, как это должно быть. Пройдя WWDC 2016, сессию 240 несколько раз, я так и не могу найти, что я делаю не так.


person CamQuest    schedule 11.08.2016    source источник


Ответы (1)


MapItem должен быть получен из запроса MKLocalSearch, который принимает ваши географические координаты и название места. MapItems, которые вы получаете от MKLocalSearchResponse, — это те, которые будут приняты Apple Maps.

    let coordinate = CLLocationCoordinate2D(latitude: 38.89005200, longitude: -77.00251600)
    var points = [MKMapPointForCoordinate(coordinate)]
    let mapRect = MKPolygon(points: &points, count: 1).boundingMapRect
    let region = MKCoordinateRegionForMapRect(mapRect)
    let request = MKLocalSearchRequest()
    request.naturalLanguageQuery = "Supreme Court Historical Society"
    request.region = region
    let localSearch:MKLocalSearch = MKLocalSearch(request: request)

    localSearch.start(completionHandler: { (response:MKLocalSearchResponse?, error:Error?) in
        if error == nil {
            activity.mapItem = response!.mapItems[0]
            var userInfo = [String: AnyObject]()
            userInfo["placemark"] = NSKeyedArchiver.archivedData(withRootObject: activity.mapItem.placemark)
            activity.userInfo = userInfo
            activity.contentAttributeSet?.supportsNavigation = true
            activity.contentAttributeSet?.supportsPhoneCall = true
        }
    })
person CamQuest    schedule 11.08.2016
comment
Я сталкиваюсь с той же проблемой: если я создаю MKMapItem, делясь местоположением из Карт в своем приложении, а затем этот же элемент карты передается обратно в Карты через NSUserActivity.mapItem, он не показывает название места или кажется для кодирования географических деталей. - person Zoë Smith; 15.01.2018