iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
0


Description:
在前一篇介紹如何使用 Apple 原生的地圖資訊及定位功能,本篇將介紹目前最常見的google map圖資。
Google Maps SDK 是以 CocoaPods pod 的形式提供,需要額外下載及安裝才能導入相關的 Api 進 app project 中。步驟及方法請參考底下 reference 中 google map api 網址,裡面有非常詳細的介紹。

Component:

  1. GMSMapView
  2. CLLocationManager

Highlight function:
Google map 所需之 map view 宣告及使用方法:

var myMapView: GMSMapView!
myMapView = GMSMapView(frame: CGRect(x: 0,
                                     y: 0,
                                     width: screenSize.width,
                                     height: screenSize.height))
myMapView.mapType = .normal
myMapView.camera = GMSCameraPosition(target: defaultCenter, zoom: 1, bearing: 0, viewingAngle: 0)

為了讓開啟 app 後會有定位的動畫(從隨意地點滑動到當前地點),這邊使用 defaultCenter 來自定一隨意座標點:

let defaultCenter = CLLocationCoordinate2D(latitude: -32.725757, longitude: 21.481987)

透過 CLLocationManagerDelegate 更新定位地點:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let currentLocation: CLLocation = locations[0] as CLLocation
    print("Current Location: \(currentLocation.coordinate.latitude), \(currentLocation.coordinate.longitude)")

    if let location = locations.first {
      CATransaction.begin()
      CATransaction.setValue(Int(2), forKey: kCATransactionAnimationDuration)
      myMapView.animate(toLocation: location.coordinate)
      myMapView.animate(toZoom: 12)
      CATransaction.commit()
      myLocationMgr.stopUpdatingLocation()
    }
  }

上述中的 CATransaction 是為了產生動畫效果,其格式如下:

CATransaction.begin()
CATransaction.setValue(Int(2), forKey: kCATransactionAnimationDuration)
// the code required for animation
CATransaction.commit()

Additional:
此 demo 雖使用了 google map 所提供的圖資,但定位功能仍然是使用 iOS 原生提供的 CLLocationManager,因此在使用定位功能時仍需要跟使用者要求相關的權限,其方法與前篇一樣。


Reference:
Source code on Github
Google Map Api


上一篇
iOS App實作(8) GPS定位-1 (Apple Map)
下一篇
"available" keyword in Swift
系列文
30天Swift入門學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言