在更改之前获取和存储 PanoramaView 的位置 VC

Getting and storing position of PanoramaView before changing VC

我正在尝试学习 Google 地图 API,并且我正在构建一个包含两个 UIViewController 的应用程序。根 UIViewController 加载 Google 街景全景图,如下所示:

@IBOutlet weak var viewStreet: UIView!
var panoView: GMSPanoramaView!

override func viewDidLoad() {
    super.viewDidLoad()

    let panoView = GMSPanoramaView(frame: CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height))
    panoView.delegate = self
    panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312))

    viewStreet.addSubview(panoView)
    viewStreet.sendSubviewToBack(panoView)
 }

我添加了一个 UIButton 来加载另一个 UIViewController,我愿意添加一个 "Back" 按钮返回到第一个。使用 segues 它工作正常但 panoView 总是加载在 latitude: -33.732, longitude: 150.312,因为我已经初始化了它。我想要实现的是在切换到第二个 VC 之前回到最后一个加载的全景图的 lat/long,例如:

viewDidLoad -> 纬度。 x1,长。 y1;

移动到另一个全景图 -> 纬度。 x2,长。 y2;

改变UIViewController;

回到根目录VC,全景纬度。和长。应该是 (x2, y2).

使用 didMoveToPanorama 方法,我可以在每次 PanoramaView 更改时获取 panoID,问题是在 VC 更改时存储它。我可以使用 NSUserDefaults 还是有更好的方法?这是代码:

 func panoramaView(view: GMSPanoramaView, didMoveToPanorama panorama: GMSPanorama?) {
    panoID = panorama!.panoramaID
}

请注意,方法 didMoveToPanorama:nearCoordinate: 无法使用,因为它仅在全景因 moveNearCoordinate

而移动时调用

附带说明一下,我编辑了标题,因为它具有误导性,并改进了 post 以提供更多信息。

您可以做的是在更改控制器之前存储纬度和经度值,然后将它们恢复为如下所示:

CGFloat latitudeSave;
CGFloat longitudeSave;

-(void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    latitudeSave = -33.732; //save current coordonates here (use panoView current values)
    longitudeSave = 150.312;
}

-(void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [panoView moveNearCoordinate:CLLocationCoordinate2D(latitude: latitudeSave, longitude: longitudeSave)]; //not sure of this line 
}

我找到了实现此目的的更简单方法:

在 Main.storyboard 中:显示转至 "SecondViewController"

在SecondViewController.swift中:

@IBAction func backToPreviousVC(sender: AnyObject) {
    dismissViewControllerAnimated(true, completion: nil)
}

这样就不会调用 viewDidLoad,它会返回上次看到的全景图。