SlideShare a Scribd company logo
1 of 78
再接再勵學 Swift 程式設計
地圖、導航之程式運用
學習主題
• 學習程式的歷程
• 自我介紹與哈啦
• 功力複習
• 程式實作(Swift)
• 問題與交流
個人簡介
諸葛魔斌
工作室:諸葛魔斌科技創作室
學歷:高應大---工管系(非資訊科系)
E-Mail:chugermobin@gmail.com
官方網站:http://twcts.com
Facebook:https://goo.gl/volM7Z
粉絲團 :https://goo.gl/LI08wh
社群 :https://goo.gl/kjCsz1
Line (id) :http://goo.gl/ayGW7d
Line@ :http://goo.gl/pQHjWH
Line Bot :http://goo.gl/ljdxfV
Play商店:http://goo.gl/CkVdsd
App Store:http://apple.co/1Qehd64
專長:VB(VBA)、C#、Java(Android)、Swift(iOS)、PHP、Python、Conrona、
Golang、HTML/CSS、MySQL、FreeBSD、Server架設、CAD 、 ……
楊政斌
學習程式的歷程
學生時期:打電動,沒有日夜的界限
二專畢業:初次接觸 dBase、Lotus  使用 Clipper 做經銷存、應收付帳系統
工作階段1:接觸 Office,開始使用Excel(Lotus)
工作階段2:品保工作,自學圖表、函數、VBA,做出自動化品管系統
興趣展開:自學VB,製作ERP系統,接觸Linux、FreeBSD,自學架設Server
 諸葛魔斌誕生
大學時期:半自學 Android App(Java)、C#、iOS App(Swift)
工作轉變:成立諸葛魔斌科技創作室,接案學習,救國團電腦資訊講師
實績:
地圖、導航之程式運用
Xcode: 安裝約30~50 min.
Swift 基本需求:Mac (Mac mini、MacBook),黑蘋果
iPhone 或 iPad (非強烈需要)
憑證鑰匙: 安裝約3~5 min. (上架App Store 需要)
憑證鑰匙安裝與設定
憑證鑰匙安裝與設定
輸入申請開發者帳號的email,並選取"儲存到磁碟"後選取繼續
憑證鑰匙安裝與設定
將檔案存於"桌面",檔名為預設的
CertificateSigningRequest.certSigningRequest即可(注意,此檔可
以保存,以作為後續建立生產Prodution所需的Provisioning使用)
憑證鑰匙安裝與設定
憑證鑰匙安裝與設定
憑證鑰匙安裝與設定
登入開發者後台 https://developer.apple.com/,並選取右上方的"Member Center"
憑證鑰匙安裝與設定
選"Certificates, Identifiers & Profiles"
憑證鑰匙安裝與設定
憑證鑰匙安裝與設定
憑證鑰匙安裝與設定
於Certificates中,按左上角的"+"按鈕後,選取"iOS App Development"以製作開發用的憑證
憑證鑰匙安裝與設定
憑證鑰匙安裝與設定
憑證鑰匙安裝與設定
此時會用到鑰匙圈存取所產生的馮證檔"CertificateSigningRequest.certSigningRequest",選"Choose File"上
此"CertificateSigningRequest.certSigningRequest"上傳,接著按"Generate"產生開發用的憑證檔
憑證鑰匙安裝與設定
點選"Download"下載後此憑證檔
憑證鑰匙安裝與設定
安裝開發者憑證&發佈憑證
憑證鑰匙安裝與設定
憑證鑰匙安裝與設定
WWDR憑證:
WWDR即為Worldwide Developer Relations Certificate
Authority憑證,所以開發人員皆需要安裝此憑證,只是此
憑證不需刻意裝的原因是,在您安裝XCode即會安裝此憑
證,當然,您也可以重新下載此憑證安裝。
此憑證您可在於開發者網站,建立憑證的第一頁下方找到
地圖、導航之程式運用
GPS經、緯度資料讀取
地圖、導航之程式運用
遊樂場,練習Swift語法的地方
建立新專案(程式)
開啟已存在專案(程式)
開啟其他專案(程式)
地圖、導航之程式運用
專案模板選擇
地圖、導航之程式運用
專案(程式)名稱
組織(創作者)名稱
組織識別(網域)
專案(程式)包識別
唯一、上架用
程式語言
Objective-C 或
Swift
應用的設備
手機、平板、通用
暫不勾選
地圖、導航之程式運用
選擇存放資料夾
地圖、導航之程式運用
專案包識別碼
版本
修訂版次
開發者(團隊)
選擇模擬器
地圖、導航之程式運用
代理、協定
導覽區
程式控制
佈局頁面
資源
編輯區
設定區
地圖、導航之程式運用
導覽區 編輯區
設定區
地圖、導航之程式運用
Label
放置到佈局適當位置
地圖、導航之程式運用
Label 物件宣告
動作程式
位置管理代理
引入套件庫
地圖、導航之程式運用
動作程式
地圖、導航之程式運用
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var lblLat: UILabel!
@IBOutlet weak var lblLon: UILabel!
@IBOutlet weak var lblHorizontal: UILabel!
@IBOutlet weak var lblAltitude: UILabel!
@IBOutlet weak var lblVertical: UILabel!
@IBOutlet weak var lblDistance: UILabel!
var locationManager: CLLocationManager = CLLocationManager() //取得手機所處地理相關的資訊,包含所在座標
var startLocation: CLLocation!
//CLLocationManagerDelegate,定義了處理CLLocationManager的委外工作,以處理接收地理資訊後的工作
//CLLocationManager:取得資訊後,在委派給實作CLLocationManagerDelegate的物件,以處理取得地理資訊後的工作。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
startLocation = CLLocation(latitude: 22.6138519, longitude: 120.3024543) //目標緯度經度
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
地圖、導航之程式運用
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
//定位資訊
let latestLocation: AnyObject = locations[locations.count - 1]
lblLat.text = String(format: "%.4f", latestLocation.coordinate.latitude) //緯度
lblLon.text = String(format: "%.4f", latestLocation.coordinate.longitude) //經度
lblHorizontal.text = String(format: "%.4f", latestLocation.horizontalAccuracy) //水平精度
lblAltitude.text = String(format: "%.4f", latestLocation.altitude) //海拔高度
lblVertical.text = String(format: "%.4f", latestLocation.verticalAccuracy) //垂直精度
let distanceBetween: CLLocationDistance =
latestLocation.distanceFromLocation(startLocation) //計算startLocation與latestLocation距離
lblDistance.text = String(format: "%.2f", distanceBetween) //距離 公尺
}
func locationManager(manager: CLLocationManager,
didFailWithError error: NSError) {
}
}
地圖、導航之程式運用
GPS權限開放需求
地圖、導航之程式運用
執行模擬器
地圖、導航之程式運用
地圖顯示所在位置
地圖、導航之程式運用
專案(程式)名稱
組織(創作者)名稱
組織識別(網域)
專案(程式)包識別
唯一、上架用
程式語言
Objective-C 或
Swift
應用的設備
手機、平板、通用
暫不勾選
地圖、導航之程式運用
選擇 MapView
拉到原視圖右邊空白處
地圖、導航之程式運用
填入物件宣告
地圖、導航之程式運用
勾選 User Location,
在地圖顯示所在位置
地圖、導航之程式運用
MapView物件宣告
Location 變數宣告
動作程式
引入套件庫
地圖、導航之程式運用
import UIKit
import MapKit
class ViewController: UIViewController {
@IBOutlet weak var uimap: MKMapView!
var location : CLLocationManager!; //座標管理元件
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
location = CLLocationManager();
//詢問使用者是否同意給APP定位功能
location.requestWhenInUseAuthorization();
//開始接收目前位置資訊
location.startUpdatingLocation();
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
地圖、導航之程式運用
override func viewDidDisappear(animated: Bool) {
//因為GPS功能很耗電,所以被敬執行時關閉定位功能
location.stopUpdatingLocation();
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
//取得目前的座標位置
let c = locations[0] as! CLLocation;
//c.coordinate.latitude 目前緯度
//c.coordinate.longitude 目前經度
let nowLocation = CLLocationCoordinate2D(latitude: c.coordinate.latitude, longitude:
c.coordinate.longitude);
//將map中心點定在目前所在的位置
//span是地圖zoom in, zoom out的級距
let _span:MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: 0.0005, longitudeDelta: 0.0005);
self.uimap.setRegion(MKCoordinateRegion(center: nowLocation, span: _span), animated: true);
}
}
地圖、導航之程式運用
執行模擬器
地圖、導航之程式運用
搜尋地點&繪出導航線
地圖、導航之程式運用
專案(程式)名稱
組織(創作者)名稱
組織識別(網域)
專案(程式)包識別
唯一、上架用
程式語言
Objective-C 或
Swift
應用的設備
手機、平板、通用
暫不勾選
地圖、導航之程式運用
拉入 SeachBar, Label, MapView元件
地圖、導航之程式運用
填入物件宣告,並建立連結
SearchBar, Map, 地點位置代理
地圖、導航之程式運用
SearchBar 將地點轉成地圖位址
繪製地圖
導航線屬性
地圖、導航之程式運用
繪製導航線
地圖、導航之程式運用
計算距離和時間
地圖、導航之程式運用
import UIKit
import MapKit
class ViewController: UIViewController, UISearchBarDelegate, MKMapViewDelegate,
CLLocationManagerDelegate {
@IBOutlet weak var ssearchbar: UISearchBar!
@IBOutlet weak var mapview: MKMapView!
@IBOutlet weak var distanceLabel: UILabel!
@IBOutlet weak var timeLabel: UILabel!
var locationManager: CLLocationManager! //位置權限、自動更新定位開啟/關閉...
var dest: CLLocationCoordinate2D? //目前導航目標
var drawing: Bool = false //避免多個繪圖動作同時運行
var overlay: MKPolyline? //目前導航路線所在的Overlay
//var handler: (([CLPlacemark]?, NSError) -> Void)?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
地圖、導航之程式運用
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest //精確度
//or locationManager.requestWhenInUseAuthorization()
locationManager.requestAlwaysAuthorization() //要求抓取位置的權限
locationManager.startUpdatingLocation() //開始取得定位
//locationManager.distanceFilter = 10
//設定 mapview 和 searchbar
ssearchbar.delegate = self
mapview.delegate = self
mapview.showsUserLocation = true //顯示自己的位置 (藍色點點)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
地圖、導航之程式運用
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
CLGeocoder().geocodeAddressString(searchBar.text!) { (placemarks, error) in
if let coordinate = placemarks?.first?.location?.coordinate {
self.dest = coordinate
searchBar.resignFirstResponder() //隱藏鍵盤
self.drawRoute()
}
}
}
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
print(userLocation.coordinate)
//設置地圖中心位置
mapview.setCenterCoordinate(userLocation.coordinate, animated: true)
//可視範圍 (單位:公尺)
let viewRegion = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 500, 500)
mapview.setRegion(viewRegion, animated: true)
drawRoute()
}
地圖、導航之程式運用
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
let render = MKPolylineRenderer(polyline: self.overlay!)
render.strokeColor = UIColor (red: 0.9861, green: 0.2939, blue:0.1098, alpha: 1.0)
render.lineWidth = 3
return render
}
func drawRoute() {
if (drawing) {
return //已經在畫了等等再來 >.=
}
guard let dest = self.dest else {
return //還沒設定目的地...滾!!
}
drawing = true //開始畫了
地圖、導航之程式運用
let req = MKDirectionsRequest()
req.transportType = .Automobile //設定交通類型
//從哪裡出發
req.source = MKMapItem(placemark: MKPlacemark(coordinate: mapview.userLocation.coordinate, addressDictionary: nil))
//要去哪裡
req.destination = MKMapItem(placemark: MKPlacemark(coordinate: dest, addressDictionary: nil))
let directions = MKDirections(request: req)
//計算路徑中...
directions.calculateDirectionsWithCompletionHandler { (res, error) in
if let route = res?.routes.first {
//如果 overlay 已經存在要先移除
if let ol = self.overlay {
self.mapview.removeOverlay(ol)
}
//儲存新的 overlay
self.overlay = route.polyline
self.mapview.addOverlay(route.polyline)
地圖、導航之程式運用
//更新文字部分
self.distanceLabel.text = "估計距離:(route.distance/1000)km"
//self.timeLabel.text = "估計時間:(route.expectedTravelTime/3600)hr"
self.timeLabel.text = "估計時間:(route.expectedTravelTime/60)min"
}
self.drawing = false //畫完了
}
}
}
地圖、導航之程式運用
勾選 User Location,
在地圖顯示所在位置
地圖、導航之程式運用
GPS權限開放需求
地圖、導航之程式運用
執行模擬器
地圖、導航之程式運用
組合GPS資訊到導航地圖
地圖、導航之程式運用
調整 MapView
放入 6 個L日月水中
地圖、導航之程式運用
填入物件宣告,並建立連結
地圖、導航之程式運用
讀取 GPS 資料
地圖、導航之程式運用
import UIKit
import MapKit
class ViewController: UIViewController, UISearchBarDelegate, MKMapViewDelegate,
CLLocationManagerDelegate {
@IBOutlet weak var ssearchbar: UISearchBar!
@IBOutlet weak var mapview: MKMapView!
@IBOutlet weak var distanceLabel: UILabel!
@IBOutlet weak var timeLabel: UILabel!
@IBOutlet weak var lblLat: UILabel!
@IBOutlet weak var lblLon: UILabel!
@IBOutlet weak var lblHorizontal: UILabel!
@IBOutlet weak var lblAltitude: UILabel!
@IBOutlet weak var lblVertical: UILabel!
@IBOutlet weak var lblDistance: UILabel!
var locationManager: CLLocationManager! //位置權限、自動更新定位開啟/關閉...
var dest: CLLocationCoordinate2D? //目前導航目標
var drawing: Bool = false //避免多個繪圖動作同時運行
var overlay: MKPolyline? //目前導航路線所在的Overlay
地圖、導航之程式運用
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest //精確度
//or locationManager.requestWhenInUseAuthorization()
locationManager.requestAlwaysAuthorization() //要求抓取位置的權限
locationManager.startUpdatingLocation() //開始取得定位
//locationManager.distanceFilter = 10
//設定 mapview 和 searchbar
ssearchbar.delegate = self
mapview.delegate = self
mapview.showsUserLocation = true //顯示自己的位置 (藍色點點)
}
地圖、導航之程式運用
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
CLGeocoder().geocodeAddressString(searchBar.text!) { (placemarks, error) in
if let coordinate = placemarks?.first?.location?.coordinate {
self.dest = coordinate
searchBar.resignFirstResponder() //隱藏鍵盤
self.drawRoute()
}
}
}
地圖、導航之程式運用
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
print(userLocation.coordinate)
//設置地圖中心位置
mapview.setCenterCoordinate(userLocation.coordinate, animated: true)
//可視範圍 (單位:公尺)
let viewRegion = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 500, 500)
mapview.setRegion(viewRegion, animated: true)
drawRoute()
}
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
let render = MKPolylineRenderer(polyline: self.overlay!)
render.strokeColor = UIColor (red: 0.9861, green: 0.2939, blue:0.1098, alpha: 1.0)
render.lineWidth = 3
return render
}
地圖、導航之程式運用
func drawRoute() {
if (drawing) {
return //已經在畫了等等再來 >.=
}
guard let dest = self.dest else {
return //還沒設定目的地...滾!!
}
drawing = true //開始畫了
let req = MKDirectionsRequest()
req.transportType = .Automobile //設定交通類型
//從哪裡出發
req.source = MKMapItem(placemark: MKPlacemark(coordinate: mapview.userLocation.coordinate, addressDictionary: nil))
//要去哪裡
req.destination = MKMapItem(placemark: MKPlacemark(coordinate: dest, addressDictionary: nil))
let directions = MKDirections(request: req)
地圖、導航之程式運用
//計算路徑中...
directions.calculateDirectionsWithCompletionHandler { (res, error) in
if let route = res?.routes.first {
//如果 overlay 已經存在要先移除
if let ol = self.overlay {
self.mapview.removeOverlay(ol)
}
//儲存新的 overlay
self.overlay = route.polyline
self.mapview.addOverlay(route.polyline)
//更新文字部分
self.distanceLabel.text = "估計距離:(route.distance/1000)km"
//self.timeLabel.text = "估計時間:(route.expectedTravelTime/3600)hr"
self.timeLabel.text = "估計時間:(route.expectedTravelTime/60)min"
}
self.drawing = false //畫完了
}
}
地圖、導航之程式運用
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
//定位資訊
let latestLocation: AnyObject = locations[locations.count - 1]
lblLat.text = "緯度:" + String(format: "%.4f", latestLocation.coordinate.latitude) //緯度
lblLon.text = "經度:" + String(format: "%.4f", latestLocation.coordinate.longitude) //經度
lblHorizontal.text = "水平精度:" + String(format: "%.4f", latestLocation.horizontalAccuracy) //水平精度
lblAltitude.text = "海拔高度:" + String(format: "%.4f", latestLocation.altitude) //海拔高度
lblVertical.text = "垂直精度:" + String(format: "%.4f", latestLocation.verticalAccuracy) //垂直精度
lblDistance.text = self.distanceLabel.text //距離 公尺
}
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
}
}
地圖、導航之程式運用
執行模擬器
地圖、導航之程式運用
結論: 1. 地圖套件引入
2. 元件(物件)、變數(常數)必先宣告
3. 元件(物件)、變數(常數)命名規則  駝峰式
6. 學習階段,務必一字一字『抄』,切勿『複製貼上』
7. 大膽嘗試,好奇無罪
8. 不怕失敗,學習除錯
9. 勇於分享
4. 權限設定
5. 地圖設定
再接再勵學 Swift 程式設計
第四、五次聚會學習課程
Android App 入門第一步
iOS Swift 接力使力之玩 Open Data
學習不能中斷,卡關不要氣餒,
讓我們的熱血繼續揮撒在程式的樂趣吧!!
帶著你的筆電,和我們一起享受Coding Fun
註:我們學習的是多系統,所以筆電最好是Macbook哦!
日期:8/10(星期三) 18:30~21:30 Android App 入門第一步
8/17(星期三) 18:30~21:30 iOS Swift 接力使力之玩 Open Data
地點:高雄市前鎮區一心二路157號10樓之4(微盛科技)
捷運三多商圈站4號出口,步行約10分鐘
歡迎踴躍報名,也歡迎高手協助指導
費用:0元(珍惜學習資源)
地圖、導航之程式運用
駝峰式命名法
在命名常數、變數、函式、類別或其他自定義型別時,通常習慣使用駝峰式命名法。
這種命名方式是一種習慣,沒有絕對與強制,為的是增加識別與可讀性。
當自定義名稱是由二個或多個單字連結在一起,而構成的唯一識別字時,單字之間不以空格、連結號(-)或底線(_)
隔開,有兩種格式:
小駝峰式命名法(lower camel case)
第一個單字以小寫字母開始,第二個及之後的單字的首字母則使用大寫,像是:firstName、somePerson。
程式 (Coding) 中通常命名物件、常數、變數、函式、屬性、方法及下標時,會使用小駝峰式命名法。
大駝峰式命名法(upper camel case)
每個單字的首字母都使用大寫字母,像是LastName、SomeClass。
程式 (Coding) 中通常命名專案、列舉、結構、類別、擴展、協定及其他自定義型別時,會使用大駝峰式命名法。

More Related Content

Viewers also liked

Viewers also liked (14)

demandlocker_TRB_v3
demandlocker_TRB_v3demandlocker_TRB_v3
demandlocker_TRB_v3
 
Mojo media pack
Mojo media packMojo media pack
Mojo media pack
 
Spacehype at Tech in Asia 2015
Spacehype at Tech in Asia 2015Spacehype at Tech in Asia 2015
Spacehype at Tech in Asia 2015
 
A sopa-boa1
A sopa-boa1A sopa-boa1
A sopa-boa1
 
App 產品製作心得 - 我的 App 創業之路
App 產品製作心得 - 我的 App 創業之路App 產品製作心得 - 我的 App 創業之路
App 產品製作心得 - 我的 App 創業之路
 
資料經濟:開放資料的下一步 黃彥男博士
資料經濟:開放資料的下一步 黃彥男博士資料經濟:開放資料的下一步 黃彥男博士
資料經濟:開放資料的下一步 黃彥男博士
 
SwiftyJSON 慘痛經驗
SwiftyJSON   慘痛經驗SwiftyJSON   慘痛經驗
SwiftyJSON 慘痛經驗
 
Tiempo en desempleo y salud mental: ¿el género importa?
Tiempo en desempleo y salud mental: ¿el género importa?Tiempo en desempleo y salud mental: ¿el género importa?
Tiempo en desempleo y salud mental: ¿el género importa?
 
How I learn APP (2015)
How I learn APP (2015)How I learn APP (2015)
How I learn APP (2015)
 
千里之行,始於足下:動手寫自己的App
千里之行,始於足下:動手寫自己的App千里之行,始於足下:動手寫自己的App
千里之行,始於足下:動手寫自己的App
 
Vpon - 廣告效果導向為基礎的行動廣告系統
Vpon - 廣告效果導向為基礎的行動廣告系統Vpon - 廣告效果導向為基礎的行動廣告系統
Vpon - 廣告效果導向為基礎的行動廣告系統
 
手機自動化測試和持續整合
手機自動化測試和持續整合手機自動化測試和持續整合
手機自動化測試和持續整合
 
運用AWS開創與發展事業
運用AWS開創與發展事業運用AWS開創與發展事業
運用AWS開創與發展事業
 
iOS Swift & OCR 玩文字辨識
iOS Swift & OCR 玩文字辨識iOS Swift & OCR 玩文字辨識
iOS Swift & OCR 玩文字辨識
 

Similar to 再接再勵學 Swift 程式設計

Google maps javascript api v3
Google maps javascript api v3Google maps javascript api v3
Google maps javascript api v3
佳倫 陳
 
教學媒體第十組
教學媒體第十組教學媒體第十組
教學媒體第十組
kerstin_cheng
 
Google map api接口整理
Google map api接口整理Google map api接口整理
Google map api接口整理
lileinba
 
Html5 mobile web app浅谈
Html5 mobile web app浅谈Html5 mobile web app浅谈
Html5 mobile web app浅谈
sankyu Tang
 
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
Stipc Nsysu
 
行動商務實務 - PhoneGap Advance
行動商務實務 - PhoneGap Advance行動商務實務 - PhoneGap Advance
行動商務實務 - PhoneGap Advance
My own sweet home!
 
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
LearnWeb Taiwan
 

Similar to 再接再勵學 Swift 程式設計 (20)

怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps
 
Study mapapi v0.1
Study mapapi v0.1Study mapapi v0.1
Study mapapi v0.1
 
Google maps javascript api v3
Google maps javascript api v3Google maps javascript api v3
Google maps javascript api v3
 
iOS Map and Location
iOS Map and LocationiOS Map and Location
iOS Map and Location
 
2016輕鬆開發自有網路地圖工作坊 進階班 0701
2016輕鬆開發自有網路地圖工作坊 進階班 07012016輕鬆開發自有網路地圖工作坊 進階班 0701
2016輕鬆開發自有網路地圖工作坊 進階班 0701
 
Android基礎課程3 - APP上架、廣告與 Facebook 登入
Android基礎課程3 - APP上架、廣告與 Facebook 登入Android基礎課程3 - APP上架、廣告與 Facebook 登入
Android基礎課程3 - APP上架、廣告與 Facebook 登入
 
教學媒體第十組
教學媒體第十組教學媒體第十組
教學媒體第十組
 
教學媒體第十組
教學媒體第十組教學媒體第十組
教學媒體第十組
 
I os 07
I os 07I os 07
I os 07
 
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計
 
Google map api接口整理
Google map api接口整理Google map api接口整理
Google map api接口整理
 
HTML+COIMOTION 開發跨平台 app
HTML+COIMOTION 開發跨平台 appHTML+COIMOTION 開發跨平台 app
HTML+COIMOTION 開發跨平台 app
 
唐俊开-Html5 mobile web app浅谈
唐俊开-Html5 mobile web app浅谈唐俊开-Html5 mobile web app浅谈
唐俊开-Html5 mobile web app浅谈
 
Html5 mobile web app浅谈
Html5 mobile web app浅谈Html5 mobile web app浅谈
Html5 mobile web app浅谈
 
Android基礎課程2 - google map android API
Android基礎課程2 - google map android APIAndroid基礎課程2 - google map android API
Android基礎課程2 - google map android API
 
Html5移动web应用开发(PhoneGap)
Html5移动web应用开发(PhoneGap)Html5移动web应用开发(PhoneGap)
Html5移动web应用开发(PhoneGap)
 
Html5移动web应用开发(PhoneGap)
Html5移动web应用开发(PhoneGap)Html5移动web应用开发(PhoneGap)
Html5移动web应用开发(PhoneGap)
 
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
 
行動商務實務 - PhoneGap Advance
行動商務實務 - PhoneGap Advance行動商務實務 - PhoneGap Advance
行動商務實務 - PhoneGap Advance
 
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
 

More from 政斌 楊

More from 政斌 楊 (20)

iOS swift 玩 soket 聊天通訊程式
iOS swift 玩 soket 聊天通訊程式iOS swift 玩 soket 聊天通訊程式
iOS swift 玩 soket 聊天通訊程式
 
深入學習 iBeacon 之 iOS swift 程式設計
深入學習 iBeacon 之 iOS swift 程式設計深入學習 iBeacon 之 iOS swift 程式設計
深入學習 iBeacon 之 iOS swift 程式設計
 
Android Studio & Cloud Vision API 玩圖像辨識
Android Studio & Cloud Vision API 玩圖像辨識Android Studio & Cloud Vision API 玩圖像辨識
Android Studio & Cloud Vision API 玩圖像辨識
 
iOS swift & Cloud Vision API 玩圖像辨識
iOS swift & Cloud Vision API 玩圖像辨識iOS swift & Cloud Vision API 玩圖像辨識
iOS swift & Cloud Vision API 玩圖像辨識
 
Android studio 之 i beacon 藍芽應用開發學習
Android studio 之 i beacon 藍芽應用開發學習Android studio 之 i beacon 藍芽應用開發學習
Android studio 之 i beacon 藍芽應用開發學習
 
Python vs json 玩open data
Python vs json 玩open dataPython vs json 玩open data
Python vs json 玩open data
 
iOS swift 之 iBeacon 藍芽應用開發學習
iOS swift 之 iBeacon 藍芽應用開發學習iOS swift 之 iBeacon 藍芽應用開發學習
iOS swift 之 iBeacon 藍芽應用開發學習
 
Corona 初探 lua 語言,玩跨平台(iOS & android) 行動裝置開發工具
Corona 初探 lua 語言,玩跨平台(iOS &  android) 行動裝置開發工具Corona 初探 lua 語言,玩跨平台(iOS &  android) 行動裝置開發工具
Corona 初探 lua 語言,玩跨平台(iOS & android) 行動裝置開發工具
 
Golang 入門初體驗
Golang 入門初體驗Golang 入門初體驗
Golang 入門初體驗
 
Android studio 2.2 初體驗 & 玩 face book sdk
Android studio 2.2 初體驗 & 玩 face book sdkAndroid studio 2.2 初體驗 & 玩 face book sdk
Android studio 2.2 初體驗 & 玩 face book sdk
 
Python 入門初體驗
Python 入門初體驗Python 入門初體驗
Python 入門初體驗
 
Python 入門初體驗(程式語法)
Python 入門初體驗(程式語法)Python 入門初體驗(程式語法)
Python 入門初體驗(程式語法)
 
I os swift 3.0 初體驗 & 玩 facebook sdk
I os swift 3.0 初體驗 & 玩 facebook sdkI os swift 3.0 初體驗 & 玩 facebook sdk
I os swift 3.0 初體驗 & 玩 facebook sdk
 
Android studio 之 fcm 推播服務
Android studio 之 fcm 推播服務Android studio 之 fcm 推播服務
Android studio 之 fcm 推播服務
 
I os swift 之 fcm 推播服務
I os swift 之 fcm 推播服務I os swift 之 fcm 推播服務
I os swift 之 fcm 推播服務
 
Android & fire base 玩上雲端囉
Android & fire base 玩上雲端囉Android & fire base 玩上雲端囉
Android & fire base 玩上雲端囉
 
iOS Swift & FireBase 玩上雲端囉
iOS Swift & FireBase 玩上雲端囉iOS Swift & FireBase 玩上雲端囉
iOS Swift & FireBase 玩上雲端囉
 
Android studio 接力使力之玩 open data
Android studio 接力使力之玩 open dataAndroid studio 接力使力之玩 open data
Android studio 接力使力之玩 open data
 
Android app 入門第一步
Android app 入門第一步Android app 入門第一步
Android app 入門第一步
 
程式設計初體驗
程式設計初體驗程式設計初體驗
程式設計初體驗
 

Recently uploaded

法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
michaelell902
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
PUAXINYEEMoe
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
PUAXINYEEMoe
 

Recently uploaded (9)

taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 

再接再勵學 Swift 程式設計