目前,我正在使用SWRevealViewController
为我的项目创建侧边栏和google map api
。
https://github.com/John-Lluch/SWRevealViewController
这就是问题所在。每次我使用侧边栏切换到ViewControllers
并返回包含MapViewController
的{{1}}时,GMSMapView
会重新加载到我的位置(我在{{1}中设置它方法)。
我怎样才能阻止GMSMapView
每次都重新加载?
到目前为止我尝试过的事情:
将viewDidLoad
变为单身并将其设置为MapViewController
,但它不起作用。我得到的只是黑屏。
MapViewController
的代码:
destinationViewController
答案 0 :(得分:0)
确保您不会在viewWillAppear
或viewDidAppear
中更改地图相机的位置。
如果不是这种情况,您可以在离开视图控制器之前保存摄像机位置,并在再次显示控制器时将其恢复。
答案 1 :(得分:0)
你的问题已经有一段时间了,但是这些天我遇到了类似的问题,我想我找到了保留GMSMapView
状态的方法(虽然我不知道是否{{} 1}}会做出任何改变)。
正如你所说,我的想法是拥有一个“单身人士”,而不是我为SWRevealViewController
制作的控制器。尝试通过创建根的GMSMapView
属性GMSMapView
来创建它的子类,并在子类的UINavigationController
上初始化地图。
接口:
ViewDidLoad
类别:
#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>
@interface TEST1NavigationController : UINavigationController
@property GMSMapView *mapView;
@end
然后,在每个单独的控制器中,您可以向自定义导航控制器询问#import "TEST1NavigationController.h"
...
@implementation TEST1NavigationController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:40.7056308
longitude:-73.9780035
zoom:15];
self.mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
self.mapView.myLocationEnabled = YES;
}
...
并使用它。
GMSMapView
这样,状态应保留在导航控制器的控制器内。