1

Swift で MapKit を使用しようとしています。マップの領域に現在のユーザーの場所とその隣の関心のあるポイントを表示する必要がありますが、これらの関心のあるポイントには、視覚化ユーザー自体の異なるパターンが必要です。MapViewAnnotation のデリゲートを実装する必要があることはわかっていますが、コードに入れても実行されません。誰かが例を手伝ってくれますか?

これは私のコードです。

import UIKit
import MapKit

class ViewController: UIViewController, MKMapViewDelegate {

    @IBOutlet weak var mapView: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()


        let latArray = [-23.528657, -23.518514, -23.533796, -23.533796]
        let longArray = [-46.484008, -46.486495, -46.495533, -46.476690]

        var lat: CLLocationDegrees = -23.527096772791133
        var long: CLLocationDegrees = -46.48964569157911

        var latDelta: CLLocationDegrees = 0.01
        var longDelta: CLLocationDegrees = 0.01

        var theSpan: MKCoordinateSpan = MKCoordinateSpanMake(latDelta,longDelta)

        var mypos: CLLocationCoordinate2D = CLLocationCoordinate2DMake(lat,long)

        var myreg: MKCoordinateRegion = MKCoordinateRegionMake(mypos, theSpan)

        self.mapView.setRegion(myreg, animated: true)

        var myposannot = MKPointAnnotation()

        myposannot.coordinate = mypos
        myposannot.title = "Me"
        myposannot.subtitle = "I am here!"

        self.mapView.addAnnotation(myposannot)

        for var i=0; i<4; ++i {

            var latCli: CLLocationDegrees = latArray[i]
            var longCli: CLLocationDegrees = longArray[i]

            var myposCli : CLLocationCoordinate2D = CLLocationCoordinate2DMake(latCli,longCli)

            var myposannotCli = MKPointAnnotation()

            myposannotCli.coordinate = myposCli
            myposannotCli.title = "Cliente" + " - " + String (i)
            myposannotCli.subtitle = "Anotacao" + " - " + String (i)


            self.mapView.addAnnotation(myposannotCli)
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func mapViewAnnot(mapViewAnnot: MKMapView!,ViewForAnnotation annotation: MKAnnotation!) ->MKAnnotationView{

        if annotation is MKUserLocation{
            return nil
        }

        let reuseId = "pin"

        var pinView = mapViewAnnot.dequeueReusableAnnotationViewWithIdentifier(reuseId)   as? MKPinAnnotationView

        if(pinView == nil){
            pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
            pinView!.canShowCallout = true
            pinView!.animatesDrop = true
            pinView!.pinColor = .Red
            pinView!.rightCalloutAccessoryView = UIButton.buttonWithType(.DetailDisclosure) as UIButton
        } else {
            pinView!.annotation = annotation
        }
        return pinView!
    }

}
4

2 に答える 2

0

UIKit のインポート MapKit のインポート

クラスViewController:UIViewController {

@IBOutlet weak var mapv: MKMapView!
override func viewDidLoad() {
    super.viewDidLoad()
    
    mapv.mapType = .satellite
    let location = CLLocationCoordinate2D(latitude: 11.361516, longitude: 76.30274)
    let span = MKCoordinateSpan(latitudeDelta: 0.005, longitudeDelta: 0.005)
    let region = MKCoordinateRegion(center: location, span: span)
    mapv.setRegion(region, animated: true)
    
    
    
    let annotation = MKPointAnnotation()
    annotation.coordinate = location
    annotation.title = "Edakkara"
    annotation.subtitle = "Nilambur"
    mapv.addAnnotation(annotation)
    
于 2021-11-12T09:42:34.450 に答える