1// 2// AIRMapLocalTile.m 3// AirMaps 4// 5// Created by Peter Zavadsky on 01/12/2017. 6// Copyright © 2017 Christopher. All rights reserved. 7// 8 9#import "AIRMapLocalTile.h" 10#import <React/UIView+React.h> 11#import "AIRMapLocalTileOverlay.h" 12 13@implementation AIRMapLocalTile { 14 BOOL _pathTemplateSet; 15 BOOL _tileSizeSet; 16} 17 18 19- (void)setPathTemplate:(NSString *)pathTemplate{ 20 _pathTemplate = pathTemplate; 21 _pathTemplateSet = YES; 22 [self createTileOverlayAndRendererIfPossible]; 23 [self update]; 24} 25 26- (void)setTileSize:(CGFloat)tileSize{ 27 _tileSize = tileSize; 28 _tileSizeSet = YES; 29 [self createTileOverlayAndRendererIfPossible]; 30 [self update]; 31} 32 33- (void) createTileOverlayAndRendererIfPossible 34{ 35 if (!_pathTemplateSet || !_tileSizeSet) return; 36 self.tileOverlay = [[AIRMapLocalTileOverlay alloc] initWithURLTemplate:self.pathTemplate]; 37 self.tileOverlay.canReplaceMapContent = YES; 38 self.tileOverlay.tileSize = CGSizeMake(_tileSize, _tileSize); 39 self.renderer = [[MKTileOverlayRenderer alloc] initWithTileOverlay:self.tileOverlay]; 40} 41 42- (void) update 43{ 44 if (!_renderer) return; 45 46 if (_map == nil) return; 47 [_map removeOverlay:self]; 48 [_map addOverlay:self level:MKOverlayLevelAboveLabels]; 49} 50 51#pragma mark MKOverlay implementation 52 53- (CLLocationCoordinate2D) coordinate 54{ 55 return self.tileOverlay.coordinate; 56} 57 58- (MKMapRect) boundingMapRect 59{ 60 return self.tileOverlay.boundingMapRect; 61} 62 63- (BOOL)canReplaceMapContent 64{ 65 return self.tileOverlay.canReplaceMapContent; 66} 67 68@end 69