使用'MKMapView'在多个位置进行放大缩小。
使用'MKMapView'在多个位置进行放大缩小。
我正在使用下面的代码来从MySQL中检索数据,使用Swift在MKMapView上显示多个地点。
数据和位置显示在地图上,但我不知道如何调整缩放以覆盖该区域中的所有位置。
func parseJSON(_ data:Data) {
var jsonResult = NSArray()
do {
jsonResult = try JSONSerialization.jsonObject(with: data, options:JSONSerialization.ReadingOptions.allowFragments) as! NSArray
} catch let error as NSError {
print(error)
}
var jsonElement = NSDictionary()
let locations = NSMutableArray()
for i in 0 ..< jsonResult.count
{
jsonElement = jsonResult[i] as! NSDictionary
let location = LocationModel()
//以下通过可选绑定确保JsonElement值都不为空
if let evIdL = jsonElement["id"] as? String,
let evUserNameL = jsonElement["username"] as? String,
let evNotikindL = jsonElement["notikind"] as? String,
let evLatiL = jsonElement["lati"] as? String,
let evLongiL = jsonElement["longi"] as? String,
let evLocatL = jsonElement["locat"] as? String,
let evTimedateL = jsonElement["timedate"] as? String,
let evDistanceL = jsonElement["distance"] as? String
{
location.evId = evIdL
location.evUsername = evUserNameL
location.evNotikind = evNotikindL
location.evLati = evLatiL
location.evLongi = evLongiL
location.evLocat = evDistanceL
location.evTimedate = evTimedateL
location.evDisatnce = evDistanceL
location.evLocat = evLocatL
// 显示位置的代码
let latiCon = (location.evLati as NSString).doubleValue
let longiCon = (location.evLongi as NSString).doubleValue
let annotations = locations.map { location -> MKAnnotation in
let annotation = MKPointAnnotation()
annotation.title = evNotikindL
annotation.coordinate = CLLocationCoordinate2D(latitude:latiCon, longitude: longiCon)
return annotation
}
self.map.showAnnotations(annotations, animated: true)
self.map.addAnnotations(annotations)
}
locations.add(location)
}
DispatchQueue.main.async(execute: { () -> Void in
self.itemsDownloaded(items: locations)
})
}
我正在使用PHP文件连接MySQL,如我所说,代码能够运行并显示位置,但缩放只聚焦一个位置。
Zoom on multiple locations using 'MKMapView'的问题出现的原因是需要在地图上显示多个位置时,无法自动调整地图的缩放级别和位置。解决方法是使用MKMapView的showAnnotations方法,该方法可以根据指定的注释调整地图的可见区域。
具体解决方法如下:
1. 在需要显示多个位置的地图上调用showAnnotations方法。
2. 将要显示的位置信息作为注释添加到地图上。
3. 将注释数组作为参数传递给showAnnotations方法。
4. 设置animated参数为true以在地图上显示动画效果。
示例代码如下:
DispatchQueue.main.async {
self.map.addAnnotations(annotations)
self.map.showAnnotations(annotations, animated: true)
}
以上代码会将注释数组annotations添加到地图上,并使用showAnnotations方法调整地图的可见区域和缩放级别。
参考链接:
- [showAnnotations方法文档](https://developer.apple.com/documentation/mapkit/mkmapview/1452309-showannotations)