使用'MKMapView'在多个位置进行放大缩小。

12 浏览
0 Comments

使用'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,如我所说,代码能够运行并显示位置,但缩放只聚焦一个位置。

0
0 Comments

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)

0