-1
我有一個194x427(InterfaceBuilder大小)的MKMapView,我試圖讓地圖區域顯示一張大約3米的地圖。但我看起來最小的地圖區域是162米。如何放大或變換地圖,使其更加豐富起來?我嘗試應用CGAffineTransform,但它似乎並不正確;地圖總是會重新更新並撤銷任何變換。我該如何做這項工作?謝謝。爲什麼MKMapView不能顯示地圖視圖只有3m到10m?
我有一個194x427(InterfaceBuilder大小)的MKMapView,我試圖讓地圖區域顯示一張大約3米的地圖。但我看起來最小的地圖區域是162米。如何放大或變換地圖,使其更加豐富起來?我嘗試應用CGAffineTransform,但它似乎並不正確;地圖總是會重新更新並撤銷任何變換。我該如何做這項工作?謝謝。爲什麼MKMapView不能顯示地圖視圖只有3m到10m?
基本上解決的辦法是把MKMapView放到一個子視圖中,我稱之爲mapClipper。然後,我們要做的就是捕捉的MKMapView的圖像,並將其添加爲子視圖mapClipper,上的MKMapView本身之上,所以現在我們看到的是圖像:
UIGraphicsBeginImageContextWithOptions(_mapView.bounds.size, NO, [UIScreen mainScreen].scale);
[_mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *mapImage = [[UIImageView alloc] initWithImage:viewImage];
mapImage.tag = 666;
UIView *oldMapImage = [_mapClipper viewWithTag:666];
[oldMapImage removeFromSuperview];
[_mapClipper addSubview:mapImage];
我們放大地圖不止MKMapView通常會允許什麼,只需使用CGAffineTransformScale來修改mapImage.transform的縮放比例即可。給定一個比例因子,您可以根據地圖實際表示的每點相對於您想要的比例來確定比例因子(稱爲scaleFactor),請使用如下所示:
mapImage.transform = CGAffineTransformScale(mapImage.transform,scaleFactor, scaleFactor);