質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Swift

    7241questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Xcode

    4098questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

現在地に画像を設定したピンを立てたい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 128

umetiri

score 0

 前提・実現したいこと

Xcode初心者です

Xcodeでプロジェクトファイル内にある画像をピンに設定して
自分の現在地に立たせたいのですがMKAnotationを使うことぐらいしか
わからず四苦八苦しています助言いただければ幸いです
エラーメッセージにはいままで試した残骸をおいておきます

 発生している問題・エラーメッセージ

//        if (CLLocationManager.locationServicesEnabled()){
//
//            self.locationManager.distanceFilter = kCLDistanceFilterNone
//
//            self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
//
//            self.locationManager.delegate = self
//
//            self.locationManager.startUpdatingLocation()
//
//            mapView.mapType = MKMapType.hybrid
//
//        }
//
//        self.mapView.setCenter(self.mapView.userLocation.coordinate, animated: false)
//
//        self.mapView.userTrackingMode = .followWithHeading

//    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
//
//
//        let identifier = "annotation"
//
//        if let annotation = mapView.dequeueReusableAnnotationView(withIdentifier: "annotation") {
//
//            return annotation
//
//        } else {
//
//            let annotation = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier)
//
//            annotation.image = UIImage(named: "Cl.png")
//
//            return annotation
//        }
//
//        if(annotation is MKUserLocation){
//            return nil
//        } else {
//            let identifier = "Pin"
//            var annotationView: MKAnnotationView? = mapView.dequeueReusableAnnotationView(withIdentifier: identifier)
//            let annotationView == nil {
//                annotationView = MKAnnotationView.init(annotation: ano)
//            }
//        }
//
//    }

//    func parsed(data: Array<Dictionary<String, AnyObject>>) {
//        var annotations: [MKAnnotation] = []
//
//        for datas in data {
//
//            let Annotation = TestMKPointAnnotation()
//
//           
//            Annotation.coordinate = CLLocationCoordinate2DMake(
//                datas["lat"] as! CLLocationDegrees,
//                datas["lng"] as! CLLocationDegrees)
//            Annotation.title = datas["name"] as? String
//
//            
//            Annotation.datas = datas
//            Annotation.flag  = false
//
//            annotations.append( Annotation )
//        }
//
//        self.mapView.addAnnotations(annotations)
//    }
//        let annotation = MKAnnotationView()
//        annotation.coordinate = newLocation.coordinate
//        mapView.addAnnotation(annotation)
//
//        if annotation is MKUserLocation {
//             return nil
//        }
//
//        let pinID = "PIN"
//
//        var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: pinID) as? MKPinAnnotationView
//
//        if annotationView == nil {
//
//            annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: pinID)
//            annotationView?.image = UIImage(named: "Cl.png")
//
//        } else {
//
//            annotationView!.annotation = annotation
//
//        }
//        return annotationView
//
//    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){
//
//        if let coordinate = locations.last?.coordinate{
//
//            let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)
//
//            let region = MKCoordinateRegion(center: coordinate, span: span)
//
//            mapView.region = region
//        }

//        for location in locations{
//
//            //中心座標
//            let center = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
//
//            //表示範囲
//            let span = MKCoordinateSpanMake(0.01, 0.01)
//
//            //中心座標と表示範囲をマップに登録する。
//            let region = MKCoordinateRegionMake(center, span)
//            mapView.setRegion(region, animated:true)
//
//            let annotation = TestMKPointAnnotation()
//            annotation.coordinate = CLLocationCoordinate2DMake
//
//            //ピンを作成してマップビューに登録する。
//            let annotation: MKPointAnnotation = MKPointAnnotation()
//            annotation.coordinate = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
//            mapView.addAnnotation(annotation)
//
//            let annotation = TestMKPointAnnotation()
//             annotation.coordinate = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
//            annotation.pinImage = "pin_test_image.png"
//            mapView.addAnnotation(annotation as! MKAnnotation)
//
//        }
//
//    }

 該当のソースコード

import UIKit
import MapKit
import CoreLocation
import SwiftGifOrigin
import AVFoundation

class SecondViewController: UIViewController,CLLocationManagerDelegate, MKMapViewDelegate,AVAudioPlayerDelegate{

    @IBOutlet weak var mapView: MKMapView!

    @IBOutlet weak var imageGIFView: UIImageView!

    let testManager = CLLocationManager()

    var audioPlayerInstance : AVAudioPlayer! = nil

    var boom : MKPointAnnotation!

    override func viewDidLoad() {

        super.viewDidLoad()

        testManager.delegate = self

        testManager.startUpdatingLocation()

        testManager.requestWhenInUseAuthorization()

        //爆発音
        let soundFilePath = Bundle.main.path(forResource: "boom", ofType: "mp3")!

        let sound:URL = URL(fileURLWithPath: soundFilePath)

        // AVAudioPlayerのインスタンスを作成
        do {

            audioPlayerInstance = try AVAudioPlayer(contentsOf: sound, fileTypeHint:nil)

        } catch {

            print("AVAudioPlayerインスタンス作成失敗")

        }

        // いつでも再生できる
        audioPlayerInstance.prepareToPlay()

        //爆発gif
        let image = UIImage.gif(name:"boom")

        imageGIFView.image = image

        audioPlayerInstance.play()

        self.mapView.delegate = self

        mapView.mapType = MKMapType.hybrid
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        if let coordinate = locations.last?.coordinate {
            // 現在地を拡大して表示する
            let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)
            let region = MKCoordinateRegion(center: coordinate, span: span)
            mapView.region = region
        }
    }

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

 試したこと

http://docs.fabo.io/swift/mapkit/008_image.html
http://grandbig.github.io/blog/2017/06/04/put-annotation-2/
http://hajihaji-lemon.com/smartphone/swift/mapview_pincolor/
https://goo.gl/4iuUhj
https://qiita.com/nomunomu/items/2ee54efdb666a2eed5e4
https://qiita.com/unokun/items/a5470feb6ee52d009dcc
ここらへんのサイトからある程度コピーしていじることを繰り返していました

あとは公式のリファレンスもみたのですが英語でいまいちわかりませんでした

 補足情報(FW/ツールのバージョンなど)

Xcode9.4.1   Swift4

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Swift

    7241questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Xcode

    4098questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。