0

注釈と MKCircle で表されるジオターゲティング エリアを生成するコードを作成しました。アプリは、ユーザーが地域に出入りしたときに通知します。すべてが正常に機能していますが、アプリに複数の領域を保持/表示させる方法がわかりません (1 つの注釈/円のみが表示されます)。ここに私のコードのスニペットをいくつか示します。

override func viewDidLoad() {
    super.viewDidLoad( )


//setup locationManager
locationManager.delegate = self
locationManager.distanceFilter = kCLLocationAccuracyNearestTenMeters
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()

//setup mapView
mapView.delegate = self
mapView.showsUserLocation = true
mapView.userTrackingMode = .Follow

//setup test data will need to link coredata to pass in (LocationLabel, radius, address)
    setupData("Test1", radius: 100, Address: "735 Main Rd, Clemson")
    setupData("Test2", radius: 100, Address: "821 Main Rd, Clemson")
    setupData("Test3", radius: 100, Address: "720 Main Rd, Clemson")
}

func setupData( Label: String, radius: Double, Address: String ) {
    // check if system can monitor regions
    if CLLocationManager.isMonitoringAvailableForClass(CLCircularRegion.self) {

        //region data need to put in its own class to read multiple regions
        let title = Label
        let regionRadius = radius // in meters
        let address = Address // street, city, state zip

        //takes in the address of a location and converts it into 2d coordinates (lat/long)
        let geocoder = CLGeocoder()
        geocoder.geocodeAddressString(address) { (placemarks, error) in
            if let placemarks = placemarks {
                if placemarks.count != 0 {
                    let coordinates = placemarks.first!.location
                    let coordinate = coordinates?.coordinate

        //setup region this will read an object with a saved coordinate and name
        var region = CLCircularRegion(center: CLLocationCoordinate2D(latitude: coordinate!.latitude,
            longitude: coordinate!.longitude), radius: regionRadius, identifier: title)
        self.locationManager.startMonitoringForRegion(region)

        //setup annotation
        let annotation = MKPointAnnotation()
        annotation.coordinate = coordinate!;
        annotation.title = "\(title)";
        self.mapView.addAnnotation(annotation)

        //setup circle
        let circle = MKCircle(centerCoordinate: coordinate!, radius: regionRadius)
        self.mapView.addOverlay(circle)
    }
    else {
        print("System can't track regions")
    }
            }
        }
    }
}
4

1 に答える 1