1 // 2 // AIRGoogleMap.h 3 // AirMaps 4 // 5 // Created by Gil Birman on 9/1/16. 6 // 7 8 #ifdef HAVE_GOOGLE_MAPS 9 10 #import <UIKit/UIKit.h> 11 #import <React/RCTComponent.h> 12 #import <React/RCTBridge.h> 13 #import <GoogleMaps/GoogleMaps.h> 14 #import <MapKit/MapKit.h> 15 #import "AIRGMSMarker.h" 16 #import "RCTConvert+AirMap.h" 17 18 @interface AIRGoogleMap : GMSMapView 19 20 // TODO: don't use MK region? 21 @property (nonatomic, weak) RCTBridge *bridge; 22 @property (nonatomic, assign) MKCoordinateRegion initialRegion; 23 @property (nonatomic, assign) MKCoordinateRegion region; 24 @property (nonatomic, assign) GMSCameraPosition *cameraProp; // Because the base class already has a "camera" prop. 25 @property (nonatomic, strong) GMSCameraPosition *initialCamera; 26 @property (nonatomic, assign) NSString *customMapStyleString; 27 @property (nonatomic, assign) UIEdgeInsets mapPadding; 28 @property (nonatomic, assign) NSString *paddingAdjustmentBehaviorString; 29 @property (nonatomic, copy) RCTBubblingEventBlock onMapReady; 30 @property (nonatomic, copy) RCTBubblingEventBlock onMapLoaded; 31 @property (nonatomic, copy) RCTBubblingEventBlock onKmlReady; 32 @property (nonatomic, copy) RCTBubblingEventBlock onPress; 33 @property (nonatomic, copy) RCTBubblingEventBlock onLongPress; 34 @property (nonatomic, copy) RCTBubblingEventBlock onPanDrag; 35 @property (nonatomic, copy) RCTBubblingEventBlock onUserLocationChange; 36 @property (nonatomic, copy) RCTBubblingEventBlock onMarkerPress; 37 @property (nonatomic, copy) RCTBubblingEventBlock onChange; 38 @property (nonatomic, copy) RCTBubblingEventBlock onPoiClick; 39 @property (nonatomic, copy) RCTDirectEventBlock onRegionChange; 40 @property (nonatomic, copy) RCTDirectEventBlock onRegionChangeComplete; 41 @property (nonatomic, copy) RCTDirectEventBlock onIndoorLevelActivated; 42 @property (nonatomic, copy) RCTDirectEventBlock onIndoorBuildingFocused; 43 @property (nonatomic, strong) NSMutableArray *markers; 44 @property (nonatomic, strong) NSMutableArray *polygons; 45 @property (nonatomic, strong) NSMutableArray *polylines; 46 @property (nonatomic, strong) NSMutableArray *circles; 47 @property (nonatomic, strong) NSMutableArray *heatmaps; 48 @property (nonatomic, strong) NSMutableArray *tiles; 49 @property (nonatomic, strong) NSMutableArray *overlays; 50 51 @property (nonatomic, assign) BOOL showsBuildings; 52 @property (nonatomic, assign) BOOL showsTraffic; 53 @property (nonatomic, assign) BOOL showsCompass; 54 @property (nonatomic, assign) BOOL scrollEnabled; 55 @property (nonatomic, assign) BOOL zoomEnabled; 56 @property (nonatomic, assign) BOOL rotateEnabled; 57 @property (nonatomic, assign) BOOL scrollDuringRotateOrZoomEnabled; 58 @property (nonatomic, assign) BOOL pitchEnabled; 59 @property (nonatomic, assign) BOOL zoomTapEnabled; 60 @property (nonatomic, assign) BOOL showsUserLocation; 61 @property (nonatomic, assign) BOOL showsMyLocationButton; 62 @property (nonatomic, assign) BOOL showsIndoors; 63 @property (nonatomic, assign) BOOL showsIndoorLevelPicker; 64 @property (nonatomic, assign) NSString *kmlSrc; 65 66 - (void)didPrepareMap; 67 - (void)mapViewDidFinishTileRendering; 68 - (BOOL)didTapMarker:(GMSMarker *)marker; 69 - (void)didTapPolyline:(GMSPolyline *)polyline; 70 - (void)didTapPolygon:(GMSPolygon *)polygon; 71 - (void)didTapAtCoordinate:(CLLocationCoordinate2D)coordinate; 72 - (void)didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate; 73 - (void)didChangeCameraPosition:(GMSCameraPosition *)position isGesture:(BOOL)isGesture; 74 - (void)idleAtCameraPosition:(GMSCameraPosition *)position isGesture:(BOOL)isGesture; 75 - (void)didTapPOIWithPlaceID:(NSString *)placeID name:(NSString *) name location:(CLLocationCoordinate2D) location; 76 - (NSArray *)getMapBoundaries; 77 78 + (MKCoordinateRegion)makeGMSCameraPositionFromMap:(GMSMapView *)map andGMSCameraPosition:(GMSCameraPosition *)position; 79 + (GMSCameraPosition*)makeGMSCameraPositionFromMap:(GMSMapView *)map andMKCoordinateRegion:(MKCoordinateRegion)region; 80 81 - (NSDictionary*) getMarkersFramesWithOnlyVisible:(BOOL)onlyVisible; 82 83 @end 84 85 #endif 86