MKMapview как оверлей - PullRequest
       4

MKMapview как оверлей

0 голосов
/ 13 октября 2018

Можно ли выстроить MKMapView поверх другого MKMapView с верхом, имеющим уровень прозрачности, чтобы вы могли видеть дно.Далее, когда пользователь проводит пальцем, я бы хотел, чтобы ОБА и верхняя и нижняя карты прокручивались или увеличивались в унисон.

Я нахожу стандартную карту слишком простой и спутниковую карту слишком интенсивной и надеюсь объединить их дляэффект.

Есть мысли?

1 Ответ

0 голосов
/ 14 октября 2018

Вы можете сделать это без проблем.Как вы уже описали, просто поместите MKMapView в ваше окно, а второй сверху.Давайте предположим, что мы называем их _map1 и _map2, причем последний находится поверх _map1.Протокол MKMapViewDelegate сообщит вам, когда пользователь прокручивает / перемещает / изменяет масштаб _map2, поэтому вы можете указать _map1 отображать ту же видимую область _map2.

В моем примере я использую ползунок, чтобы установить уровень прозрачности _map2.

#import "ViewController.h"

@import MapKit;

@interface ViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *map1;
@property (weak, nonatomic) IBOutlet MKMapView *map2;
@property (weak, nonatomic) IBOutlet UISlider *alphaSlider;


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [_map1 setMapType:MKMapTypeSatellite];
    [_map2 setMapType:MKMapTypeStandard];
    [_map2 setAlpha:0.5];
    [_map2 setDelegate:self];
    [_alphaSlider addTarget:self action:@selector(sliderChanged) forControlEvents:UIControlEventAllEvents] ;
    _alphaSlider.value = _map2.alpha;
}

- (void)mapViewDidChangeVisibleRegion:(MKMapView *)mapView
{
    // _map2 is on top and will receive visible region updates, i.e. the user scrolled/moved/zoomed the map 
    // just pass the new region to _map1 so it will be similar to that one of _map2 
    [_map1 setRegion:_map2.region];
}

- (void)sliderChanged
{
    [_map2 setAlpha:_alphaSlider.value];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...