Для приложения я создаю, у меня есть пользовательская "старая карта" PNG эффекта, который я хотел бы наложить на представлении MKMapView. К сожалению, никакой способ, которым я попытался сделать, это точно правильно:
То, что я в основном хочу выполнить, имеет подпредставление, которое разделено на уровни выше maptiles, но ниже представлений аннотации, и это будет содержать устойчивый, в то время как пользователь прокручивает вокруг — какие-либо мысли?
Обратите внимание, что все Mkmapview
Mkmapview
SubViews иерархия, аннотации, поведение и т. Д. Выруются во внутреннем частном MkmapviewInternal класс, поэтому изменение чего-либо (так, как я предлагаю или другой) в этой структуре может вызвать ваш Приложение для отклонения от AppStore.
У меня нет полного решения, просто идея. Моя идея состоит в том, чтобы сделать вид наложения иметь одинаковое руководство, что и представления аннотации, и убедитесь, что аннотации будут размещены на нашем наложении. В MkmapviewDeleggate мы реализуем:
- (void)mapView:(MKMapView *)aMapView didAddAnnotationViews:(NSArray *)views{
if (views.count > 0){
UIView* tView = [views objectAtIndex:0];
UIView* parView = [tView superview];
UIView* overlay = [tView viewWithTag:2000];
if (overlay == nil){
overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:MY_IMAGE_NAME]];
overlay.frame = parView.frame; //frame equals to (0,0,16384,16384)
overlay.tag = 2000;
overlay.alpha = 0.7;
[parView addSubview:overlay];
[overlay release];
}
for (UIView* view in views)
[parView bringSubviewToFront:view];
}
}
Этот код делает половину того, что вы хотите - вы получаете представление, размещенное между плитками и аннотациями карты. Оставшаяся задача - это изменение пользовательских накладных кадров в соответствии с прокруткой / масштабированием карты (я буду публиковать, если я найду путь).