我目前正在构建一个 ios 应用程序,我希望实现一个功能,其中用户的位置显示在谷歌地图视图上,当他们移动折线时,显示用户到目前为止所走过的路径。这显然需要实时发生。
到目前为止,我已经初始化了一个谷歌地图视图,并且可以使用observeValueForKeyPath函数显示用户的当前位置。视图和位置标记会随着用户移动而更新。
我认为最好的方法是创建一个 GMSMutablePath 对象,该对象在每次地图相机更新到新位置时添加用户的当前位置,然后从该路径创建一条折线。我用于此的代码如下:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"myLocation"] && [object isKindOfClass:[GMSMapView class]])
{
[self.myMapView animateToCameraPosition:[GMSCameraPosition cameraWithLatitude:self.myMapView.myLocation.coordinate.latitude
longitude:self.myMapView.myLocation.coordinate.longitude
zoom:18]];
[trackedPath addCoordinate:CLLocationCoordinate2DMake(self.myMapView.myLocation.coordinate.latitude, self.myMapView.myLocation.coordinate.longitude)];
GMSPolyline *testPoly = [GMSPolyline polylineWithPath:trackedPath];
testPoly.strokeWidth = 8;
testPoly.strokeColor = [UIColor redColor];
testPoly.map = myMapView;
}
}
在实践中,这不会在地图上产生任何折线,因此非常感谢任何帮助/建议!