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