Map跨度为0.1时如何显示Map注记?我希望在Map跨度〈= 0.1之前不显示Map大头针
struct City: Identifiable {
let id = UUID()
let name: String
let coordinate: CLLocationCoordinate2D
}
struct ContentView: View {
@State private var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 10, longitudeDelta: 10))
let annotations = [
City(name: "London", coordinate: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275)),
City(name: "Paris", coordinate: CLLocationCoordinate2D(latitude: 48.8567, longitude: 2.3508)),
City(name: "Rome", coordinate: CLLocationCoordinate2D(latitude: 41.9, longitude: 12.5)),
City(name: "Washington DC", coordinate: CLLocationCoordinate2D(latitude: 38.895111, longitude: -77.036667))
]
var body: some View {
Map(coordinateRegion: $region, annotationItems: annotations) {
MapPin(coordinate: $0.coordinate)
}
.frame(width: 400, height: 300)
}
}
如何才能做到这一点?
2条答案
按热度按时间dzhpxtsq1#
不能使用MapPin,因为它是
protocol
的类型,而不是View
的类型。您可以使用MapAnnotation
来代替它。因为您的region
参数绑定了视图,所以您可以检查Map跨度并显示/隐藏注解,如下所示;2q5ifsrm2#
您可以使用一个计算变量,当
span
正确时返回true
,然后有条件地让Map
使用注解。也可以使用
CLLocation
sdistance
过滤端号,以便仅打印中心/可见端号特定距离内的端号。例如,如果你放大到伦敦,排除巴黎,罗马和华盛顿特区。