3

我想在我的应用程序中显示两张地图。一个视图中的一张大地图和另一个视图中的另一张作为“迷你地图”。小地图应该是静态的。

我的问题是,当我在大地图上滚动此地图并返回到小地图所在的另一个视图时,小地图的坐标与大地图上的坐标相同。

大地图代码:

self.placeMapView = [[SKMapView alloc] init];
self.placeMapView.frame = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame));
self.placeMapView.delegate = self;
self.placeMapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.placeMapView.settings.poiDisplayingOption = SKPOIDisplayingOptionNone;
[self.view addSubview:self.placeMapView];



//set the map region
SKCoordinateRegion region;
region.center = CLLocationCoordinate2DMake(40.758637, -73.986171);
region.zoomLevel = 17;
self.placeMapView.visibleRegion = region;

迷你地图代码:

self.miniMap = [[SKMapView alloc] init];
self.miniMap.frame = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.showMap.frame), CGRectGetHeight(self.showMap.frame));
self.miniMap.delegate = self;
self.miniMap.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.miniMap.mapScaleView.hidden = YES;
self.miniMap.settings.showCompass = NO;
[self.showMap setUserInteractionEnabled:NO];
[self.showMap addSubview:self.miniMap];


//set the map region
SKCoordinateRegion region;
region.center = CLLocationCoordinate2DMake(40.758637, -73.986171);
region.zoomLevel = 15;
self.miniMap.visibleRegion = region;

这些片段不在同一个视图中,也不在同一个代码中!

我怎样才能防止这种行为?

编辑: 好的,这很容易。不知道为什么要花这么长时间才能拿到它。只需执行 viewWillAppear 方法中的代码/函数。所以解决了!

4

1 回答 1

1

编辑:好的,这很容易。不知道为什么要花这么长时间才能拿到它。只需执行 viewWillAppear 方法中的代码/函数。所以解决了!

这没有解决,您只需通过在地图出现之前重置要显示的地图坐标来隐藏问题。

我对 Android+iOS SDk 2.2.0 有同样的问题,所以我暂时保留当前位置的痕迹,以便稍后恢复它,但如果有人知道如何解决这个问题,那就太好了,因为在我看来,2 个不同的实例共享属性似乎不正常

顺便说一句,似乎只有关于地图渲染的属性是共享的,因为在地图上禁用捏/平移/旋转不会改变其他属性。奇怪的是,SKMapSurfaceView 的每个实例都实例化了自己的渲染对象,如 Skobbler 的源代码所示:

...
this.a = new MapRenderer();
...
于 2014-09-16T14:38:44.530 回答