【초보자용】Swift3로 폭속 코딩 그 6(지도와 타이머)

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

미리보기



일정 시간 간격으로 지도를 축척합니다.



지도



지도를 보려면 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)

}

좋은 웹페이지 즐겨찾기