Ios 如何在swift 3中使用谷歌地图跟踪用户的实时位置?

Ios 如何在swift 3中使用谷歌地图跟踪用户的实时位置?,ios,google-maps,location,Ios,Google Maps,Location,我是Swift新手,谷歌地图任何人都可以建议如何使用谷歌地图Swift 3跟踪用户的实时位置。对于此任务,您需要将谷歌地图SDK集成到您的项目中。是关于iOS上谷歌地图的入门 但是,如果你不依赖谷歌地图,也就是说你没有特定的需求,那么一定要考虑苹果地图(MapKit)。不要不必要地将依赖项集成到项目中 您还需要CoreLocation。这是苹果的所有位置相关的图书馆。因此得名。:] 不久前,一个用于检索项目范围内用户位置的单例对象。使用它,单个实体检索位置信息,您可以在整个项目中访问它,而无需重

我是Swift新手,谷歌地图任何人都可以建议如何使用谷歌地图Swift 3跟踪用户的实时位置。

对于此任务,您需要将谷歌地图SDK集成到您的项目中。是关于iOS上谷歌地图的入门

但是,如果你不依赖谷歌地图,也就是说你没有特定的需求,那么一定要考虑苹果地图(MapKit)。不要不必要地将依赖项集成到项目中

您还需要CoreLocation。这是苹果的所有位置相关的图书馆。因此得名。:]


不久前,一个用于检索项目范围内用户位置的单例对象。使用它,单个实体检索位置信息,您可以在整个项目中访问它,而无需重复。使用多个CoreLocationManager或将其放入AppDelegate中是一种不好的做法。起初,您可能无法获得它,但后来这是一条路。

您需要考虑以下几个步骤

总的来说,您需要:

  • 使用核心位置获取位置更新
    CLLocation
  • 初始化谷歌地图视图
    GMSMapView
  • 每次更新时,都会将地图视图设置为新位置的动画
  • 如果要跟踪路径,请使用
    GMSPath
    GMSPolyline
所以

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

  • 您需要导入该库
  • 创建CLLocationManager的实例,它是管理更新的类
  • 实施
    CLLocationManagerDelegate
    方法来接收每个更新
你可以阅读苹果的文档

初始化谷歌地图视图:

  • 您可以通过以下代码来实现这一点
每次更新时,都会将地图视图设置为新位置的动画:

  • 这就是跟踪发生的地方,每次您在
    CLLocationManagerDelegate
    的委托方法中获得更新时,您将获得一个
    CLLocation
    数组,您可以使用它将地图动画化到新位置
示例(内部委托方法):

如果要跟踪路径,请使用
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
    
这是一个非常粗略的整体,你应该做什么,但我希望它给你一个什么步骤要遵循的想法。谷歌的指南是非常完整的,你可以跟随他们,以更好地了解他们的图书馆如何工作。如果你的应用程序正在跟踪美国的用户,你也可以使用苹果的MapKit,我不建议其他地区使用苹果的MapKit。谷歌地图对美国以外地区的地址格式和街道准确性有更好的支持


如果多个视图访问位置使用单例优化性能,Can建议使用单例访问位置是您目前应该做的。整个应用程序中只有一个实例应该管理位置更新,并将其传递给必要的视图。

嗨,kishan,欢迎使用Stack Overflow!丹尼尔·索托首先感谢你回答我的问题。实际上,我的问题是如何跟踪用户的实时位置,例如,如果我们在优步预订任何出租车,在那里我们可以看到司机的实时位置。在这种情况下,我必须选择applemapkit还是google map kitWell,正如我之前所说,使用谷歌地图或MapKit的决定更多地取决于您将使用该应用程序的国家以及苹果对该国的支持;不在你会给它的用途上。跟踪的过程是相同的,不同的是,在您给出的同一个示例中,优步是实施位置更新的一个,当它收到位置更新时,它会将其发送到后端服务或乘客。当乘客从后端或直接接收到它时,它应该相应地更新路径、多段线和地图,使用我前面介绍的相同过程。
// 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