そのコードを Xcode に貼り付けて動かしたらちゃんとルートが表示されましたよ。(Compiler error: Invalid library file という謎のメッセージが出てますが。)
Could not retrieve region info というエラーは、何をした時にどこに出ますか? また、開発環境 (macOS, Xcode, iOS のバージョン、実機なら iPhone の機種など) もお書きください。
それから、コードのインデントが失われて読みにくいので、<code> 機能を使って読みやすくしてくれると助かります。
https://orenodiy.com/teratail-question-howto#toc8
swift5
1 2import UIKit 3import MapKit 4 5class MapViewController: UIViewController { 6 7 @IBOutlet weak var mapView: MKMapView! 8 //座標の配列 9 let coordinatesArray = [ 10 ["name":"東京駅", "lat":35.68124, "lon": 139.76672], 11 ["name":"皇居外苑", "lat":35.68026, "lon": 139.75801], 12 ["name":"国立劇場", "lat":35.6818, "lon": 139.74326], 13 ["name":"九段下駅", "lat":35.69555, "lon": 139.75074] 14 ] 15 16 override func viewDidLoad() { 17 super.viewDidLoad() 18 self.mapView.delegate = self 19 makeMap() 20 } 21 22 func makeMap(){ 23 //マップの表示域を設定 24 let coordinate = CLLocationCoordinate2DMake(coordinatesArray[0]["lat"] as! CLLocationDegrees, coordinatesArray[0]["lon"] as! CLLocationDegrees) 25 let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) 26 let region = MKCoordinateRegion(center: coordinate, span: span) 27 self.mapView.setRegion(region, animated: true) 28 29 30 var routeCoordinates: [CLLocationCoordinate2D] = [] 31 for i in 0..<coordinatesArray.count { 32 let annotation = MKPointAnnotation() 33 let annotationCoordinate = CLLocationCoordinate2DMake(coordinatesArray[i]["lat"] as! CLLocationDegrees, coordinatesArray[i]["lon"] as! CLLocationDegrees) 34 annotation.title = coordinatesArray[i]["name"] as? String //ピンの吹き出しに名前が出るように 35 annotation.coordinate = annotationCoordinate 36 routeCoordinates.append(annotationCoordinate) 37 self.mapView.addAnnotation(annotation) 38 } 39 var myRoute: MKRoute! 40 let directionsRequest = MKDirections.Request() 41 var placemarks = [MKMapItem]() 42 //routeCoordinatesの配列からMKMapItemの配列にに変換 43 for item in routeCoordinates{ 44 let placemark = MKPlacemark(coordinate: item, addressDictionary: nil) 45 placemarks.append(MKMapItem(placemark: placemark)) 46 } 47 directionsRequest.transportType = .walking //移動手段は徒歩 48 for (k, item) in placemarks.enumerated(){ 49 if k < (placemarks.count - 1){ 50 directionsRequest.source = item //スタート地点 51 directionsRequest.destination = placemarks[k + 1] //目標地点 52 let direction = MKDirections(request: directionsRequest) 53 direction.calculate(completionHandler: {(response, error) in 54 if error == nil { 55 myRoute = response?.routes[0] 56 self.mapView.addOverlay(myRoute.polyline, level: .aboveRoads) //mapViewに絵画 57 } 58 }) 59 } 60 } 61 } 62} 63 64extension MapViewController:MKMapViewDelegate { 65 66 func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 67 if annotation is MKUserLocation { 68 return nil 69 } 70 let reuseId = "pin" 71 var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) 72 if pinView == nil { 73 pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId) 74 pinView?.canShowCallout = true //吹き出しで情報を表示出来るように 75 }else{ 76 pinView?.annotation = annotation 77 } 78 return pinView 79 } 80 81 //ピンを繋げている線の幅や色を調整 82 func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 83 let route: MKPolyline = overlay as! MKPolyline 84 let routeRenderer = MKPolylineRenderer(polyline: route) 85 routeRenderer.strokeColor = UIColor(red:1.00, green:0.35, blue:0.30, alpha:1.0) 86 routeRenderer.lineWidth = 3.0 87 return routeRenderer 88 } 89 90} 91`` 92 93これでビルドするとCould not retrieve region infoというエラーが出てしまいます。 94地図を使ってルート検索をしたいのですが地図しか出ないです。 95解決方法を教えていただきたいです。 96実機ではないです。 97macOs catalina 98xcode 11.5
あなたの回答
tips
プレビュー