SwiftUI中Map组件参数报错问题咨询
SwiftUI中Map组件参数报错问题咨询
嘿,这个报错我之前也碰到过,大概率是Map构造器的参数匹配或者变量类型出了问题,我给你梳理下解决思路:
首先先看你给出的代码:
var body: some View { MapKit.Map(cameraPosition: $cameraPosition) { Marker("San Francisco", coordinate: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)) } .frame(height: 300) }
你遇到的「Extra arguments at positions #1, #2」错误,核心原因是编译器找不到匹配的Map构造器,常见的两个诱因和解决方法如下:
诱因一:
cameraPosition的类型不匹配
Map组件的cameraPosition:参数要求的是MapCameraPosition类型的绑定,但很多新手会误将它定义成CLLocationCoordinate2D类型。你需要把cameraPosition改成正确的类型,比如:@State private var cameraPosition = MapCameraPosition.region( MKCoordinateRegion( center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) ) )如果只是想绑定一个坐标点,也可以用
MapCameraPosition.coordinate(...)来包装:@State private var cameraPosition = MapCameraPosition.coordinate( CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194) )诱因二:构造器参数传递的语法歧义
在部分SwiftUI版本中,当你使用命名参数cameraPosition:后,直接用尾随闭包可能会让编译器误解参数对应关系。这时你可以明确指定content:参数来消除歧义:var body: some View { Map(cameraPosition: $cameraPosition, content: { Marker("San Francisco", coordinate: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)) }) .frame(height: 300) }另外,只要你在文件顶部导入了
import MapKit,直接写Map就可以,不用写MapKit.Map哦。
按照上面的步骤调整后,这个报错应该就能解决啦~
内容来源于stack exchange
相关产品推荐
相关产品推荐

