使用未解析的标识符“地图”SwiftUI

Posted

技术标签:

【中文标题】使用未解析的标识符“地图”SwiftUI【英文标题】:Use of unresolved identifier 'Map' SwiftUI 【发布时间】:2020-12-24 12:40:55 【问题描述】:

我正在关注 SwiftUI 的 official tutorial 并遇到错误消息“使用未解析的标识符“地图”。即使我复制并粘贴教程中的代码,它仍然给我错误。我已经查看了一些类似问题的解决方案,但似乎找不到任何可行的方法。代码如下。

import SwiftUI
import MapKit

struct MapView: View 
    @State private var region = MKCoordinateRegion(
        center: CLLocationCoordinate2D(latitude: 34.011_286, longitude: -116.166_868),
        span: MKCoordinateSpan(latitudeDelta: 0.2, longitudeDelta: 0.2)
    )

    var body: some View 
        Map(coordinateRegion: $region)
    
    

    struct MapView_Previews: PreviewProvider 
    static var previews: some View 
        MapView()
    

如果这真的很明显,我深表歉意 - 但我是 Swift/SwiftUI 的新手,看不出问题出在哪里。提前致谢!

【问题讨论】:

Map 自 Xcode 12 / ios 14.0 起可用。也许您使用较早的部署目标或环境。 Map 从 iOS14 开始仅在文档中可用: // 使用 MapKit 导入 SwiftUI 时可用 @available(iOS 14.0, tvOS 14.0, macOS 11.0, watchOS 7.0, *) public struct Map :查看内容:查看 【参考方案1】:

在这种情况下我也遇到了麻烦。 因此,我使用 UIViewRepresentable 使用 2 种方法制作 View 方法:'makeUIView' 和 'updateUIView'。

地图视图

import SwiftUI
import MapKit

struct MapViewUI: UIViewRepresentable 
    func makeUIView(context: Context) -> MKMapView 
         MKMapView(frame: .zero)
    
    func updateUIView(_ view: MKMapView, context: Context) 
            let coordinate = CLLocationCoordinate2D(
                latitude: 2.6540427, longitude: 98.8932576)
            let span = MKCoordinateSpan(latitudeDelta: 2.0, longitudeDelta: 2.0)
            let region = MKCoordinateRegion(center: coordinate, span: span)
            view.setRegion(region, animated: true)
    

而且,你可以这样称呼你的视图

struct MapPageView: View 
    var body: some View 
        VStack 
            MapViewUI()
                .frame(height: 300)
        
    

【讨论】:

工作 - 经过一番战斗 - 但对于约书亚树,坐标应该是:纬度:33.8734,经度:-115.9010)【参考方案2】:

问题与导入 MapKit 有关。因为 Map 是在 MapKit 中定义的。请验证您是否能够正确导入 MapKit

【讨论】:

以上是关于使用未解析的标识符“地图”SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章

在代码“使用未解析的标识符 Firestore”中出现错误,但程序运行良好 SwiftUI

使用未解析的标识符“GMSServices”

SwiftUI SceneDelegate 问题

计时器经过后,SwiftUI 应用程序的 UI 测试未找到设置了可访问性标识符的元素

使用未解析的标识符“kCAFillModeForwards”

使用未解析的标识符 FBSession