我在同一个应用程序上工作了好几个月,这是一个新问题。我想知道Apple Map数据的服务器端是否有变化。这是问题所在:
我的应用程序(有时)想要将MKMapView区域设置为特定位置周围最完全放大的值。为此,我做了类似的事情:
self.map.mapType = MKMapTypeHybrid;
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(item.lat, item.lng), 1.0, 1.0);
[self.map setRegion:region animated:NO];
无论item's
坐标在哪里,我都会得到网格化的“无卫星图像”背景。这似乎与可用的卫星图像无关,因为它在美国的许多地区表现一致。
我知道setRegion:animated:
可能会在事后调整区域。而且我知道1平方米是一个不合理的小区域,试图在一张相当大的地图上展示。所以,我试过了
[self.map setRegion:[self.map regionsThatFits:region] animated:NO];
设置animated:YES
确实可以防止这种情况发生,但我不想动画这些更改。
还有一些观察结果:
– mapViewDidFailLoadingMap:withError:
没有帮助。它从未被称为。对此解决方案的任何想法,或确认这是一个系统性问题?
答案 0 :(得分:1)
//fix for ios6
if (region.span.latitudeDelta < .0005f)
region.span.latitudeDelta = .0005f;
if (!region.span.longitudeDelta < .0005f)
region.span.longitudeDelta = .0005f;
确保lat / lon的区域范围没有设置得太低,它会清空。
答案 1 :(得分:1)
我最终继承了MKMapView
并覆盖了setRegion:
。我已经在Github中创建了一个示例应用程序,如果有人有兴趣看到实际问题或我的解决方案:
https://github.com/DeepFriedTwinkie/iOS6MapZoomIssue
我的setRegion:
方法如下所示:
- (void) setRegion:(MKCoordinateRegion)region animated:(BOOL)animated {
@try {
// Get the zoom level for the proposed region
double zoomLevel = [self getFineZoomLevelForRegion:region];
// Check to see if any corrections are needed:
// - Zoom level is too big (a very small region)
// - We are looking at satellite imagery (Where the issue occurs)
// - We have turned on the zoom level protection
if (zoomLevel >= (MAX_GOOGLE_LEVELS-1) && self.mapType != MKMapTypeStandard && self.protectZoomLevel) {
NSLog(@"setRegion: Entered Protected Zoom Level");
// Force the zoom level to be 19 (20 causes the issue)
MKCoordinateRegion protectedRegion = [self coordinateRegionForZoomLevel:MAX_GOOGLE_LEVELS-1.0 atCoordinate:region.center];
[super setRegion:protectedRegion animated:animated];
} else {
[super setRegion:region animated:animated];
}
}
@catch (NSException *exception) {
[self setCenterCoordinate:region.center];
}
}