2017-10-11 27 views
-1

我是Swift和谷歌地圖的新手,任何人都可以通過使用Google Maps Swift 3來推薦如何跟蹤用戶的實時位置。如何使用谷歌地圖在swift 3中跟蹤用戶的實時位置?

+1

嗨基山,歡迎來到堆棧溢出!預計你至少會[在提問前嘗試做一些工作](https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users )。 – NBajanca

回答

1

您需要考慮幾個步驟。

總的來說,你需要:

  • 使用核心位置CLLocation
  • 初始化谷歌地圖查看GMSMapView
  • 每當你更新你動畫地圖視圖,以新的位置獲取位置更新
  • 如果你想跟蹤路徑使用GMSPathGMSPolyline

所以......

使用核心位置獲取位置更新:

  • 你需要導入德庫
  • 創建CLLocationManager的實例,它是管理更新類
  • 實施CLLocationManagerDelegate方法接收每個更新

你可以蘆葦蘋果的文檔here

初始化谷歌地圖查看:

  • 你會得到一個更新您動畫地圖視圖,以新的位置每次通過代碼做到這一點這是跟蹤發生的地方,每當您在代理方法CLLocationManagerDelegate中獲得更新時,您都會得到一個CLLocation,你可以使用它來將你的地圖動畫到新的位置。

例(內委託方法):

... 
let newLocationCoordinate = locations.last!.coordinate 
self.mapView.animate(toLocation: newLocationCoordinate) 
// mapView should be of type GMSMapView 

如果你想跟蹤路徑使用GMSPathGMSPolyline

  • 要做到這一點,你需要存儲的實例都在GMSPathGMSPolyline,在viewDidLoad或初始化代碼中初始化它們。

  • 每次你得到你所應該做這樣的事情的更新:

    // Say your GMSPath instance is called trackingPath: 
    trackingPath.add(locations.last!.coordinate) 
    // Say your GMSPolyline instance is called trackingPolyline: 
    // You clear the mapView to remove obsolete polyline 
    mapView.clear() 
    // You update your polyline with the path 
    trackingPolyline.path = path 
    // You add the polyline to the UI by pointing its map atribute to your mapView 
    trackingPolyline.map = mapView 
    

這是你應該做的非常粗略的整體,但我希望它給你一個什麼樣的步驟來一個想法跟隨。 Google的指南非常完整,您可以按照這些指南來更好地瞭解其圖書館的工作方式。如果您的應用在美國追蹤用戶,您也可以使用Apple的MapKit,但我不推薦Apple的MapKit用於其他地區。 GoogleMaps可以更好地支持美國以外地區的地址格式和街道準確性。

如果多個視圖訪問位置使用Singleton來優化性能,Can建議使用Singleton訪問位置是您應該做的。整個應用中只有一個實例應該管理位置更新並將其傳遞給必要的視圖。

+0

@丹尼爾索托首先感謝您回答我的問題。 – Ram

+0

其實我的問題是如何跟蹤用戶的現場位置,例如,如果我們預訂任何出租車在我們能夠看到司機活的位置。在這種情況下,我必須選擇applemapkit或谷歌地圖工具包 – Ram

+0

好吧,正如我所說之前,使用谷歌地圖或MapKit的決定更多取決於您將使用該應用的國家以及蘋果對該國的支持;不在你將使用它的用途上。跟蹤的過程是相同的,不同之處在於,在您提供的同一個示例中,優步是實施位置更新的一個,當它收到一個時,它將其發送到後端服務或乘客。當乘客從後端或直接接收它時,應使用我之前展示的相同程序更新路徑,折線和地圖。 –

0

對於這項任務,您需要將Google Maps SDK集成到您的項目中。 This RayWenderlich tutorial是iOS上Google地圖的入門。

但是,如果您不依賴Google地圖,那是您沒有特定需求,請考慮Apple Maps(MapKit)。不要不必要地將依賴關係整合到你的項目中。

您還需要CoreLocation。這是蘋果公司所有與位置相關的圖書館。由此得名。 :]

一會兒回來,I wrote一個singleton對象檢索項目範圍的用戶位置。有了它,一個實體將檢索位置信息,並且您可以在整個項目中訪問它,而無需重複。擁有多個CoreLocationManager或將其放入AppDelegate是一種不好的做法。起初,你可能沒有得到它,但後來它是要走的路。

相關問題