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