我想从外部GPS坐标使用MapKit(MapView)显示我的当前位置(不使用iPhone定位服务)。显示新坐标位置的注释标记应该是我要保留的唯一标记,而保留所有以前的注释。坐标值是从ContentView更新的(从外部检索)。
我如何仅显示当前注释标记(具有最新位置)?
import SwiftUI
import MapKit
struct MapView: UIViewRepresentable {
var longi = 34.011286
var lati = -116.166868
func makeUIView(context: Context) -> MKMapView {
MKMapView(frame: .zero)
}
func updateUIView(_ uiView: MKMapView, context: Context) {
let coordinate = CLLocationCoordinate2D(
latitude: lati, longitude: longi)
let pinpoa=MKPointAnnotation()
pinpoa.coordinate=coordinate
pinpoa.title="CAR"
let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)
let region = MKCoordinateRegion(center: coordinate, span: span)
uiView.setRegion(region, animated: true)
uiView.addAnnotation(pinpoa)
}
}
每次添加新注释时,只需删除地图上已经存在的注释。因此:
func updateUIView(_ uiView: MKMapView, context: Context) {
let coordinate = CLLocationCoordinate2D(latitude: lati, longitude: longi)
let pinpoa=MKPointAnnotation()
pinpoa.coordinate=coordinate
pinpoa.title="CAR"
let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)
let region = MKCoordinateRegion(center: coordinate, span: span)
uiView.setRegion(region, animated: true)
let annotations = mapView.annotations
mapView.removeAnnotations(annotations) // REMOVE THEM HERE
uiView.addAnnotation(pinpoa)
}