0

好的,这是交易:

我有两种观点:简单和高级。在 iPad 上,它们带有一个大地图视图,带有一个可以移动以指示位置的标记。

每个视图都有一个不同的 MkMapView 实例。当我从一个切换到另一个时,我希望将地图保持在完全相同的位置和缩放级别,以便用户感觉就像是同一张地图。

但是,每个视图的地图视图的形状略有不同。这是因为高级搜索在地图上方有更多内容。

当我打开地图(这是来自抽象超类的代码,所以两个实例都得到它)时,我设置了区域和标记位置,如下所示:

[mapSearchView setRegion:[mapSearchView regionThatFits:[[BMLTAppDelegate getBMLTAppDelegate] searchMapRegion]]];
[myMarker setCoordinate:[[BMLTAppDelegate getBMLTAppDelegate] searchMapMarkerLoc]];

searchMapRegion 和 searchMapMarkerLoc 是静态的,反映了当前显示的地图的区域和标记位置(地图的中心)。

这是问题所在:

因为地图的形状略有不同,所以总会有一些调整。这可以来回“弹跳”,因此每次切换时地图缩放都会不断减小,直到您看到整个世界。

我是否使用 regionThatFits 并不重要。即使使用以下代码,也会发生同样的事情:

[mapSearchView setRegion:[[BMLTAppDelegate getBMLTAppDelegate] searchMapRegion]];
[myMarker setCoordinate:[[BMLTAppDelegate getBMLTAppDelegate] searchMapMarkerLoc]];

我想要的只是显示完全相同的缩放和中心。我不在乎高级视图是否有点切断。

我如何获得 $#@!! MapKit 停止调整缩放系数?

4

1 回答 1

0

仅供参考。我通过创建一个自定义模型层类来解决这个问题,该类维护比例和中心点,并被多个 MKMapViews 使用。它工作得很好,但 MapKit 有时会稍微调整比例以适应它的“定位器”之一。

于 2012-06-06T20:05:55.430 回答