如何仅在iOS(Swift)的MapKit中保留当前的注释标记?

问题描述 投票:-2回答:1

我想从外部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)
} 
}
ios swift mapkit
1个回答
0
投票

每次添加新注释时,只需删除地图上已经存在的注释。因此:

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.