12

我正在使用谷歌地图 SDK。我想每 5 秒更新一次 pin 的 gps 坐标。目前我只是在更新 GMSMarker 的位置属性。但它给出了跳跃效果。我想在地图上顺利移动标记。
这是我更新标记位置的代码

-(void)updateLocationoordinates(CLLocationCoordinate2D) coordinates
{ 
  if (marker == nil) {
      marker = [GMSMarker markerWithPosition:coordinates];
      marker.icon = [UIImage imageNamed:CAR_FOUND_IMAGE];
      marker.map = mapView_;
  } else
  marker.position = coordinates; 
}
4

3 回答 3

35

将您的 else 块更改为更像这样:

[CATransaction begin];
[CATransaction setAnimationDuration:2.0];
marker.position = coordindates;
[CATransaction commit];

我们使您能够使用Core Animation为 Google 地图制作动画。

有关工作示例,请参阅AnimatedCurrentLocationViewController.{c,m}SDK 示例应用程序。

于 2013-10-02T02:02:17.013 回答
1

布雷特在 swift -3 和 4 中的回答

CATransaction.begin()
CATransaction.setAnimationDuration(2.0)
marker.position = coordindates
CATransaction.commit()
于 2018-08-15T08:35:35.197 回答
0

只是在视图中初始化标记确实加载并在你想要这样做时更新它不需要任何类型的动画

- (void)viewDidLoad {
    [super viewDidLoad];
    ..write code here
        marker = [[GMSMarker alloc] init];
}
    marker.position = CLLocationCoordinate2DMake([latitudue doubleValue], [longitude doubleValue]);
于 2017-06-01T09:38:55.080 回答