5

我正在使用适用于 iOS 的最新谷歌地图 SDK,其中我无法像下面那样旋转地图。

例如。MKMapview 能够使用 Compass Heading 旋转它。

[mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES];

所以我的问题是有没有朋友帮我找出如何在 Google MAP SDK 中完成这件事。

我已经提到了关于 Google Map SDK 的所有内容,我找不到任何此类属性或任何根据设备指南针值旋转地图的方法。

我已经提到了这个关于指南针价值的链接,但我找不到任何与此相关的东西。

https://developers.google.com/maps/documentation/ios/map

4

4 回答 4

6

似乎 Google Maps iOS SDK 中没有针对此功能的直接步骤。您可以通过结合以下2个功能来达到所需的效果:

1、偶尔使用locationManager:didUpdateHeading:读取当前方位。查看此帖子以查看使用情况

2、获取新的方位值后,使用[mapView_animateToBearing:x]设置方位;

于 2013-07-03T11:40:18.300 回答
2

通过结合上述帖子中的所有链接,这是一种旋转 GoogleMaps iOS SDK 的尝试,它对我来说效果很好

首先创建一个CLLocationManager

    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate=self;
    locationManager.desiredAccuracy=kCLLocationAccuracyBest;
    locationManager.distanceFilter=kCLDistanceFilterNone;
    [locationManager startUpdatingLocation];

    [locationManager startUpdatingHeading];

并在标题发生变化时使用CLLocationManager'startUpdatingHeading方法调用委托方法 。- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading现在您可以使用以下代码根据标题更改旋转地图。

- (void)locationManager:(CLLocationManager *)manager  didUpdateHeading:(CLHeading *)newHeading
{
    double heading = newHeading.trueHeading;
    double headingDegrees = (heading*M_PI/180);
    CLLocationDirection trueNorth = [newHeading trueHeading];
    [mapView_ animateToBearing:trueNorth];
}
于 2016-01-18T10:07:40.010 回答
1

斯威夫特 3.0

需要设置位置管理器并调用 startUpdatingHeading:

class NavegacaoRotaViewController: UIViewController ,GMSMapViewDelegate,CLLocationManagerDelegate

...

self.locationManager = CLLocationManager()
self.locationManager.delegate = self
self.locationManager.startUpdatingHeading()

然后包含以下委托方法,您应该能够从 newHeading 中提取航向角:

func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
            googleMapsView.animate(toBearing: newHeading.trueHeading)
}

对象-c

需要设置位置管理器并调用 startUpdatingHeading:

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager startUpdatingHeading];

然后包含以下委托方法,您应该能够从 newHeading 中提取航向角:

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
  NSLog(@"Updated heading: %@", newHeading);
}
于 2017-07-30T10:58:42.227 回答
1

地图旋转迅速 5.0

 func intlizeLocationManager(){
    locationManager = CLLocationManager()
    handleArea.delegate = self
    handleArea.settings.myLocationButton = true
    locationManager?.delegate = self
    locationManager?.requestAlwaysAuthorization()
    locationManager?.desiredAccuracy = kCLLocationAccuracyBestForNavigation
    locationManager.distanceFilter = kCLDistanceFilterNone
    locationManager?.requestWhenInUseAuthorization()
    locationManager?.allowsBackgroundLocationUpdates = true
    locationManager?.startUpdatingLocation()
    locationManager.startMonitoringSignificantLocationChanges()
    locationManager.startUpdatingHeading()

}

 func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
    let head = newHeading.trueHeading
    map.animate(toBearing: head)
}
于 2021-02-24T14:09:46.573 回答