我有一段代码可以确定最佳region.span.latitudeDelta
和region.span.longitudeDelta
. 它找到左上角和右下角,并获取纬度坐标和长坐标之间的差异。
我遇到的问题是渲染实际上与我在执行时设置的不同:
region = self.regionThatFits(region)
self.setRegion(region, animated: true)
例如,如果我首先选择要渲染的项目(比如说从表格中),然后切换到地图,我会得到不同的结果(视觉上),而不是在地图上显示所有点然后选择我想要的保持。
更重要的是,如果我渲染地图上的所有点,然后选择一些点并渲染选中,然后删除过滤器并渲染所有点,地图与我开始时的不同 - 它显示了所有点,但它更小(看起来缩小了)与初始视图相比。
在调试时,我可以看到这两种情况都生成了相同的跨度值,但渲染就好像忽略了它们。从调试使用(在英国的选定点):
加载所有点:
region.span.latitudeDelta 7.439768
region.span.longitudeDelta 11.0
过滤点:
region.span.latitudeDelta 1.25
region.span.longitudeDelta 10.50477
删除过滤器:
region.span.latitudeDelta 7.439768
region.span.longitudeDelta 11.0
在重新渲染之前(而不是仅仅在 viewDidLoad 上),我尝试将地图重新居中在一个固定坐标上,但这没有任何区别。
我想强调的是,每次运行上述序列时,地图都不会一直缩小。它有点缩小一次,就是这样。
我缺少一个明显的步骤吗?我需要设置的隐藏布尔值?还有什么?
我也尝试从 regionThatFits 更改为
regionToRender = MKCoordinateRegionMake(region.center, region.span)
我也尝试了以下方法:
func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
self.mapView.region = mapView.region
}
无论我做什么,如果我已经在地图上应用注释过滤器,它看起来好像实际跨度增加/加倍(或者好像地图边缘周围有一个强制框架)使地图看起来好像它尽管调试输出以其他方式显示,但仍被缩小...
下面是来自不同场景的两张图片。任何建议将不胜感激。
谢谢!