加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – openInMapsWithLaunchOptions无效吗?

发布时间:2020-12-14 05:30:39 所属栏目:百科 来源:网络整理
导读:我正在传递地图选项,但这似乎与缩放级别没有任何关系?它保持相同的低缩放级别. 我错过了什么? func openMapForPlace() { let regionDistance:CLLocationDistance = 10000 var coordinates = CLLocationCoordinate2DMake(detailItem!.geoLatitude,detailIte
我正在传递地图选项,但这似乎与缩放级别没有任何关系?它保持相同的低缩放级别.
我错过了什么?
func openMapForPlace() {
    let regionDistance:CLLocationDistance = 10000
    var coordinates = CLLocationCoordinate2DMake(detailItem!.geoLatitude,detailItem!.geoLongitude)
    let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates,regionDistance,regionDistance)
    var options = [
        MKLaunchOptionsMapCenterKey: NSValue(MKCoordinate: regionSpan.center),MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span)
    ]
    var placemark = MKPlacemark(coordinate: coordinates,addressDictionary: nil)
    var mapItem = MKMapItem(placemark: placemark)
    mapItem.name = detailItem!.cityName
    mapItem.openInMapsWithLaunchOptions(options)
}
Apple的文档没有提及它,但是从测试来看,如果将一个或多个MKMapItem添加到地图中,似乎openInMapsWithLaunchOptions()似乎忽略了MKLaunchOptionsMapSpanKey选项.

以下代码按预期工作,修改距离参数时正确调整地图缩放(尝试使用1000和10000000,以查看差异):

func openMapForPlace() {
    let regionDistance: CLLocationDistance = 10000000
    let coordinates = CLLocationCoordinate2DMake(40,0)
    let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates,regionDistance)
    let options = [
        MKLaunchOptionsMapCenterKey: NSValue(MKCoordinate: regionSpan.center),MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span)
    ]

    MKMapItem.openMapsWithItems([],launchOptions: options)
}

但是,只要将一个MKMapItem添加到地图中,缩放就会停止工作.

func openMapForPlace() {
    let regionDistance: CLLocationDistance = 10000000
    let coordinates = CLLocationCoordinate2DMake(40,MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span)
    ]

    let placemark = MKPlacemark(coordinate: coordinates,addressDictionary: nil)
    let mapItem = MKMapItem(placemark: placemark)
    mapItem.name = "Test"

    MKMapItem.openMapsWithItems([mapItem],launchOptions: options)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读