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

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

第１回：[【初心者向け】Swift3で爆速コーディングその１(画面作成とSnippetsの使い方)](http://qiita.com/teradonburi/items/d0ffb6367e34966d761b)
第２回：[【初心者向け】Swift3で爆速コーディングその２(UIViewと文字表示)](http://qiita.com/teradonburi/items/fe79959d692c7efc99d1)
第３回：[【初心者向け】Swift3で爆速コーディングその３(ボタンクリックとイベント)](http://qiita.com/teradonburi/items/381aabdf547977953d48#_reference-4e99e4f5de9c0f6c2d05)
第４回：[【初心者向け】Swift3で爆速コーディングその４(画像とアニメーション)](http://qiita.com/teradonburi/items/389fadf28215944f1054)
第５回：[【初心者向け】Swift3で爆速コーディングその５(サウンドとデリゲート)](http://qiita.com/teradonburi/items/274f9f669e7a79fc53a4)

# ソースコード
全ソースコードです。

```
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
```

# プレビュー
一定時間おきに地図を縮尺します。

<img width="852" alt="スクリーンショット 2016-09-27 23.23.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/55077/64d0d33a-0948-cc91-6cd8-095aaaeb8937.png">


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

```
// 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)
                
}
```