如何使地图以用户输入的位置为中心?

问题描述

我正在制作一个天气应用程序,其中一个功能是当用户搜索某个位置时,他们可以在地图上看到它的位置。如何使地图以该位置为中心?示例:搜索旧金山,地图显示旧金山。我是否需要以某种方式将名称转换为坐标,然后将其作为地图的输入,还是可以以更好的方式完成?

解决方法

我最近不得不这样做,这就是我解决的方法。首先,我使用 MapKit API 进行自然语言查询:

let request = MKLocalSearch.Request()
request.naturalLanguageQuery = sender.stringValue
let searchRequest = MKLocalSearch(request: request)

searchRequest.start(completionHandler: { response,error in
    DispatchQueue.main.async {
        self.results = response.mapItems
        // Present the results...
    }
})

然后一旦选择了一个项目,您应该能够使用它来居中地图:

if let circularRegion = mapItem.placemark.region as? CLCircularRegion {
    let coordinateRegion = MKCoordinateRegion(center: circularRegion.center,latitudinalMeters: circularRegion.radius * 2,longitudinalMeters: circularRegion.radius * 2)
    mapView.setRegion(coordinateRegion,animated: true)
}

我相信您会想要稍微调整居中行为。