2017-10-11 28 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是一种不好的做法。起初,你可能没有得到它,但后来它是要走的路。

相关问题