问题描述
我正在制作一个天气应用程序,其中一个功能是当用户搜索某个位置时,他们可以在地图上看到它的位置。如何使地图以该位置为中心?示例:搜索旧金山,地图显示旧金山。我是否需要以某种方式将名称转换为坐标,然后将其作为地图的输入,还是可以以更好的方式完成?
解决方法
我最近不得不这样做,这就是我解决的方法。首先,我使用 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)
}
我相信您会想要稍微调整居中行为。