Наложение MKMapView в IOS6

Я добавляю пользовательские наложения в MKMapView, и перед добавлением наложения необходимо очистить содержимое карты (т. е. при масштабировании или панорамировании карта по умолчанию должна быть невидимой). Что-то похожее на «canReplaceMapContent» в IOS7 и более поздних версиях.

Есть ли способ выполнить это действие в IOS6?

Заранее спасибо.,


person Krishna Chaitanya Bandaru    schedule 05.11.2014    source источник


Ответы (2)


Вы метод ниже:

- (void) removeMapOverlay {
    [self.mapView removeOverlays:[self.mapView overlays]];

    NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[self.mapView annotations]];
    if ([tempArray containsObject:[MKUserLocation class]]) {
        [tempArray removeObject:[MKUserLocation class]];
    }

    NSArray *annotationArray = [NSArray arrayWithArray:tempArray];
    tempArray = nil;
    [self.mapView removeAnnotations:annotationArray];
}

Изменить:

Когда вы сжимаете/масштабируете или панорамируете карту. Доступны два метода делегата, которые вы можете использовать, чтобы проверить, загружается карта или нет?

- (void)mapViewWillStartLoadingMap:(MKMapView *)mapView {
    NSLog(@"loading...");
}

- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
    NSLog(@"Map loaded...");
}

Что я предлагаю вам использовать выше двух методов. Создайте логическую переменную или какое-либо средство, чтобы не загружать аннотации при масштабировании. Как бы то ни было, я буду обновлять, если есть другой простой способ сделать это.

person Kampai    schedule 05.11.2014
comment
Спасибо за ответ, но это удаляет все пользовательские наложения, добавленные в mkmapview, но не карту из mkmapview. - person Krishna Chaitanya Bandaru; 05.11.2014
comment
Если вы хотите удалить карту из MkMapView, то где вы показываете пользовательские оверлеи? - person Kampai; 05.11.2014
comment
в IOS7, если мы используем этот флаг (canReplaceMapContent), мы не можем видеть карту до добавления наложения или при масштабировании или панорамировании. Я пытался добиться этого для IOS6, но не смог понять. - person Krishna Chaitanya Bandaru; 05.11.2014
comment
@KrishnaChaitanyaBandaru Проверьте, отредактируйте ответ. Это может помочь вам. Я отредактирую ответ, если есть более простой способ сделать это. - person Kampai; 05.11.2014
comment
Я пробовал это, но все же я смог увидеть карту. Кажется, нет возможности заставить mkmapview перестать загружать свои тайлы - person Krishna Chaitanya Bandaru; 07.11.2014
comment
Нет. Вы не можете переопределить загрузку фрагментов карты по умолчанию. Да, вы можете контролировать загрузку пользовательских оверлеев. - person Kampai; 07.11.2014

Вы можете нарисовать пользовательское непрозрачное наложение поверх карт Apple, но все же есть очень небольшая вероятность того, что время от времени вы будете видеть карту внизу. Я бы порекомендовал альтернативный набор инструментов с открытым исходным кодом, которым вы можете управлять, например Mapbox для полного контроля.

person incanus    schedule 05.11.2014