好的,这是交易:
我有两种观点:简单和高级。在 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 停止调整缩放系数?