如何使用谷歌地图在swift 3中跟踪用户的实时位置?
您需要考虑几个步骤。
总的来说,你需要:
- 使用核心位置
CLLocation
- 初始化谷歌地图查看
GMSMapView
- 每当你更新你动画地图视图,以新的位置获取位置更新
- 如果你想跟踪路径使用
GMSPath
和GMSPolyline
所以......
使用核心位置获取位置更新:
- 你需要导入德库
- 创建CLLocationManager的实例,它是管理更新类
- 实施
CLLocationManagerDelegate
方法接收每个更新
你可以芦苇苹果的文档here
初始化谷歌地图查看:
- :
- 您可以按照Google's guide
你会得到一个更新您动画地图视图,以新的位置每次通过代码做到这一点这是跟踪发生的地方,每当您在代理方法
CLLocationManagerDelegate
中获得更新时,您都会得到一个CLLocation
,你可以使用它来将你的地图动画到新的位置。
例(内委托方法):
...
let newLocationCoordinate = locations.last!.coordinate
self.mapView.animate(toLocation: newLocationCoordinate)
// mapView should be of type GMSMapView
如果你想跟踪路径使用GMSPath
和GMSPolyline
:
要做到这一点,你需要存储的实例都在
GMSPath
和GMSPolyline
,在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访问位置是您应该做的。整个应用中只有一个实例应该管理位置更新并将其传递给必要的视图。
对于这项任务,您需要将Google Maps SDK集成到您的项目中。 This RayWenderlich tutorial是iOS上Google地图的入门。
但是,如果您不依赖Google地图,那是您没有特定需求,请考虑Apple Maps(MapKit)。不要不必要地将依赖关系整合到你的项目中。
您还需要CoreLocation。这是苹果公司所有与位置相关的图书馆。由此得名。 :]
一会儿回来,I wrote一个singleton对象检索项目范围的用户位置。有了它,一个实体将检索位置信息,并且您可以在整个项目中访问它,而无需重复。拥有多个CoreLocationManager或将其放入AppDelegate是一种不好的做法。起初,你可能没有得到它,但后来它是要走的路。
嗨基山,欢迎来到堆栈溢出!预计你至少会[在提问前尝试做一些工作](https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users )。 – NBajanca