14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者向け】Swift3で爆速コーディングその6(地図とタイマー)

Last updated at Posted at 2016-09-27

Playgroundによるコーディングです。
初めての方は下記をご参考ください。

第1回:【初心者向け】Swift3で爆速コーディングその1(画面作成とSnippetsの使い方)
第2回:【初心者向け】Swift3で爆速コーディングその2(UIViewと文字表示)
第3回:【初心者向け】Swift3で爆速コーディングその3(ボタンクリックとイベント)
第4回:【初心者向け】Swift3で爆速コーディングその4(画像とアニメーション)
第5回:【初心者向け】Swift3で爆速コーディングその5(サウンドとデリゲート)

ソースコード

全ソースコードです。

import UIKit
import MapKit

class ViewController: UIViewController,MKMapViewDelegate {
    
    var cnt:Double = 0
    var mapView : MKMapView!
    var coordinate: CLLocationCoordinate2D!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        // MapViewの生成
        mapView = MKMapView()
        mapView.frame = self.view.bounds
        // Delegateを設定
        mapView.delegate = self
        self.view.addSubview(mapView)
        
        // 中心点の緯度経度
        let lat: CLLocationDegrees = 35.681298
        let lon: CLLocationDegrees = 139.766247
        coordinate = CLLocationCoordinate2DMake(lat, lon)
        
        // 縮尺
        let latDist : CLLocationDistance = 10000
        let lonDist : CLLocationDistance = 10000
        
        // 表示領域を作成
        let region: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(coordinate, latDist, lonDist);
        
        // MapViewに反映
        mapView.setRegion(region, animated: true)
        
        // タイマーを作る
        Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.onUpdate(_:)), userInfo: nil, repeats: true)
        
    }
    
    
    // scheduledTimerで指定された秒数毎に呼び出されるメソッド.
    func onUpdate(_ timer : Timer){
        
        cnt += 100.0
        
        //桁数を指定して文字列を作る.
        let str = "Time:".appendingFormat("%.1f",cnt)
        print(str)
        
        
        // 縮尺
        let latDist: CLLocationDistance = 1000 + cnt
        let lonDist: CLLocationDistance = 1000 + cnt

        
        // 表示領域を作成
        let region: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(coordinate, latDist, lonDist);
        
        // MapViewに反映
        mapView.setRegion(region, animated: true)
        
        
    }

    // Regionが変更された時に呼び出されるメソッド
    func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
        
        print("regionDidChangeAnimated")
    }
    

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
}

let viewController = ViewController()
viewController.view.backgroundColor = UIColor.white


import PlaygroundSupport


PlaygroundPage.current.liveView = viewController
PlaygroundPage.current.needsIndefiniteExecution = true

プレビュー

一定時間おきに地図を縮尺します。

スクリーンショット 2016-09-27 23.23.55.png

地図

地図を表示するにはMapKitフレームワークとMKMapViewDelegateを使います。
デリゲートに関しては第5回を参考にしてください

// MapViewの生成
mapView = MKMapView()
mapView.frame = self.view.bounds
// Delegateを設定
mapView.delegate = self
self.view.addSubview(mapView)
        
// 中心点の緯度経度
let lat: CLLocationDegrees = 35.681298
let lon: CLLocationDegrees = 139.766247
coordinate = CLLocationCoordinate2DMake(lat, lon)
        
// 縮尺
let latDist : CLLocationDistance = 10000
let lonDist : CLLocationDistance = 10000
        
// 表示領域を作成
let region: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(coordinate, latDist, lonDist);
        
// MapViewに反映
mapView.setRegion(region, animated: true)

タイマー

タイマーを作成するにはTimerクラスのscheduledTimerメソッドを使います。

// タイマーを作る
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.onUpdate(_:)), userInfo: nil, repeats: true)

タイマーのメソッドで一定時間おきに地図を拡大させます。

// scheduledTimerで指定された秒数毎に呼び出されるメソッド.
func onUpdate(_ timer : Timer){
        
        cnt += 100.0
        
        //桁数を指定して文字列を作る.
        let str = "Time:".appendingFormat("%.1f",cnt)
        print(str)
        
        
        // 縮尺
        let latDist: CLLocationDistance = 1000 + cnt
        let lonDist: CLLocationDistance = 1000 + cnt

        
        // 表示領域を作成
        let region: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(coordinate, latDist, lonDist);
        
        // MapViewに反映
        mapView.setRegion(region, animated: true)
                
}
14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?