diff options
author | Fabian Guerra <fabian.guerra@mapbox.com> | 2018-05-08 09:30:44 -0400 |
---|---|---|
committer | Fabian Guerra <fabian.guerra@mapbox.com> | 2018-05-11 17:48:18 -0400 |
commit | 020e416f7e7436a7b13d9b34aae6782732ff6f48 (patch) | |
tree | b49bc54b77dac8e205d7bece7c8ae3d306f782a7 | |
parent | e839bf52997249bdbe1373d4df6a257c7f779a5f (diff) | |
download | qtlocation-mapboxgl-upstream/fabian-custom-lm-hd.tar.gz |
[ios] Add MGLLocationManager.upstream/fabian-custom-lm-hd
-rw-r--r-- | platform/darwin/src/MGLLocationManager.h | 52 | ||||
-rw-r--r-- | platform/darwin/src/MGLLocationManager.m | 88 | ||||
-rw-r--r-- | platform/ios/app/MBXCustomLocationManager.h | 14 | ||||
-rw-r--r-- | platform/ios/app/MBXCustomLocationManager.m | 96 | ||||
-rw-r--r-- | platform/ios/app/MBXViewController.m | 17 | ||||
-rw-r--r-- | platform/ios/app/coordinates.json | 276 | ||||
-rw-r--r-- | platform/ios/app/white_house_lvl_0.geojson | 4747 | ||||
-rw-r--r-- | platform/ios/ios.xcodeproj/project.pbxproj | 24 | ||||
-rw-r--r-- | platform/ios/src/MGLMapView.h | 4 | ||||
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 23 | ||||
-rw-r--r-- | platform/ios/src/Mapbox.h | 1 |
11 files changed, 5333 insertions, 9 deletions
diff --git a/platform/darwin/src/MGLLocationManager.h b/platform/darwin/src/MGLLocationManager.h new file mode 100644 index 0000000000..665dc1adb4 --- /dev/null +++ b/platform/darwin/src/MGLLocationManager.h @@ -0,0 +1,52 @@ +// +// MGLLocationManager.h +// dynamic +// +// Created by Fabian Guerra Soto on 5/7/18. +// Copyright © 2018 Mapbox. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <CoreLocation/CoreLocation.h> + +@protocol MGLLocationManagerDelegate; + +@protocol MGLLocationManager <NSObject> + +- (void)startUpdatingLocation; +- (void)startUpdatingHeading; + +- (void)stopUpdatingLocation; +- (void)stopUpdatingHeading; + +- (void)requestAlwaysAuthorization; +- (void)requestWhenInUseAuthorization; + +- (void)setDelegate:(id<MGLLocationManagerDelegate>)delegate; + +- (void)setHeadingOrientation:(CLDeviceOrientation)headingOrientation; +- (CLDeviceOrientation)headingOrientation; + +- (CLAuthorizationStatus)authorizationStatus; + +@optional +@end + +@protocol MGLLocationManagerDelegate <NSObject> + +- (void)locationManager:(id<MGLLocationManager>)manager + didUpdateLocations:(NSArray<CLLocation *> *)locations; + +- (void)locationManager:(id<MGLLocationManager>)manager + didUpdateHeading:(CLHeading *)newHeading; + +@optional +@end + + + + + +@interface MGLAppleLocationManager : NSObject<MGLLocationManager> + +@end diff --git a/platform/darwin/src/MGLLocationManager.m b/platform/darwin/src/MGLLocationManager.m new file mode 100644 index 0000000000..58c3ff7508 --- /dev/null +++ b/platform/darwin/src/MGLLocationManager.m @@ -0,0 +1,88 @@ +// +// MGLLocationManager.m +// dynamic +// +// Created by Fabian Guerra Soto on 5/7/18. +// Copyright © 2018 Mapbox. All rights reserved. +// + +#import "MGLLocationManager.h" + +@interface MGLAppleLocationManager()<CLLocationManagerDelegate> + +@property (nonatomic) CLLocationManager *locationManager; +@property (nonatomic, weak) id<MGLLocationManagerDelegate> delegate; + +@end + +@implementation MGLAppleLocationManager + +- (instancetype)init +{ + if (self = [super init]) { + _locationManager = [[CLLocationManager alloc] init]; + _locationManager.delegate = self; + } + return self; +} + +- (void)startUpdatingLocation +{ + [self.locationManager startUpdatingLocation]; +} + +- (void)startUpdatingHeading +{ + [self.locationManager startUpdatingHeading]; +} + +- (void)stopUpdatingLocation +{ + [self.locationManager stopUpdatingLocation]; +} + +- (void)stopUpdatingHeading +{ + [self.locationManager stopUpdatingHeading]; +} + +- (void)requestAlwaysAuthorization +{ + [self.locationManager requestAlwaysAuthorization]; +} + +- (void)requestWhenInUseAuthorization +{ + [self.locationManager requestWhenInUseAuthorization]; +} + +- (void)setDelegate:(id<MGLLocationManagerDelegate>)delegate +{ + _delegate = delegate; +} + +- (void)setHeadingOrientation:(CLDeviceOrientation)headingOrientation +{ + self.locationManager.headingOrientation = headingOrientation; +} + +- (CLDeviceOrientation)headingOrientation +{ + return self.locationManager.headingOrientation; +} + +- (CLAuthorizationStatus)authorizationStatus +{ + return [CLLocationManager authorizationStatus]; +} + +#pragma mark - User Location + +- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations +{ + if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateLocations:)]) { + [self.delegate locationManager:self didUpdateLocations:locations]; + } +} + +@end diff --git a/platform/ios/app/MBXCustomLocationManager.h b/platform/ios/app/MBXCustomLocationManager.h new file mode 100644 index 0000000000..65ac078f71 --- /dev/null +++ b/platform/ios/app/MBXCustomLocationManager.h @@ -0,0 +1,14 @@ +// +// MBXCustomLocationManager.h +// iosapp +// +// Created by Fabian Guerra Soto on 5/11/18. +// Copyright © 2018 Mapbox. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <Mapbox/Mapbox.h> + +@interface MBXCustomLocationManager : NSObject<MGLLocationManager> + +@end diff --git a/platform/ios/app/MBXCustomLocationManager.m b/platform/ios/app/MBXCustomLocationManager.m new file mode 100644 index 0000000000..0a5e31c494 --- /dev/null +++ b/platform/ios/app/MBXCustomLocationManager.m @@ -0,0 +1,96 @@ +// +// MBXCustomLocationManager.m +// iosapp +// +// Created by Fabian Guerra Soto on 5/11/18. +// Copyright © 2018 Mapbox. All rights reserved. +// + +#import "MBXCustomLocationManager.h" + +@interface MBXCustomLocationManager() +@property (nonatomic) CLDeviceOrientation orientation; +@property (nonatomic, weak) id<MGLLocationManagerDelegate>delegate; +@property (nonatomic, strong) NSTimer *locationTimer; +@property (nonatomic, strong) NSDictionary *coordiantes; +@property (nonatomic) NSUInteger index; +@end + +@implementation MBXCustomLocationManager + +- (instancetype)init +{ + if (self = [super init]) { + _coordiantes = [self JSONCoordinates]; + _index = 0; + } + return self; +} + +- (CLAuthorizationStatus)authorizationStatus { + return kCLAuthorizationStatusAuthorizedAlways; +} + +- (CLDeviceOrientation)headingOrientation { + return _orientation; +} + +- (void)requestAlwaysAuthorization { + +} + +- (void)requestWhenInUseAuthorization { + +} + +- (void)setDelegate:(id<MGLLocationManagerDelegate>)delegate { + _delegate = delegate; +} + +- (void)setHeadingOrientation:(CLDeviceOrientation)headingOrientation { + _orientation = headingOrientation; +} + +- (void)startUpdatingHeading { + +} + +- (void)startUpdatingLocation { + self.locationTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateLocation) userInfo:nil repeats:YES]; +} + +- (void)stopUpdatingHeading { + + +} + +- (void)stopUpdatingLocation { + [self.locationTimer invalidate]; + self.locationTimer = nil; +} + +- (void)updateLocation +{ + if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateLocations:)]) { + + NSArray *coors = [self.coordiantes objectForKey:@"coordinates"]; + if (self.index >= [coors count] ) { + self.index = 0; + } + NSDictionary *loc = coors[self.index]; + CLLocationDegrees latitude = [[loc objectForKey:@"latitude"] doubleValue]; + CLLocationDegrees longitude = [[loc objectForKey:@"longitude"] doubleValue]; + CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; + self.index++; + [self.delegate locationManager:self didUpdateLocations:@[location]]; + } +} + +- (NSDictionary *)JSONCoordinates +{ + NSString *path = [[NSBundle mainBundle] pathForResource:@"coordinates" ofType:@"json"]; + NSData *data = [NSData dataWithContentsOfFile:path]; + return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; +} + +@end diff --git a/platform/ios/app/MBXViewController.m b/platform/ios/app/MBXViewController.m index 80163c7d40..295aa6c847 100644 --- a/platform/ios/app/MBXViewController.m +++ b/platform/ios/app/MBXViewController.m @@ -6,6 +6,7 @@ #import "MBXAnnotationView.h" #import "MBXUserLocationAnnotationView.h" #import "MBXEmbeddedMapViewController.h" +#import "MBXCustomLocationManager.h" #import <Mapbox/Mapbox.h> @@ -250,6 +251,9 @@ typedef NS_ENUM(NSInteger, MBXSettingsMiscellaneousRows) { self.showZoomLevelEnabled = YES; [self updateHUD]; } + + self.mapView.locationManager = [[MBXCustomLocationManager alloc] init]; + [self.mapView.locationManager startUpdatingLocation]; } - (UIInterfaceOrientationMask)supportedInterfaceOrientations @@ -1987,6 +1991,19 @@ typedef NS_ENUM(NSInteger, MBXSettingsMiscellaneousRows) { // that a device with an English-language locale is already effectively // using locale-based country labels. _localizingLabels = [[self bestLanguageForUser] isEqualToString:@"en"]; + + NSString *filePath = [[NSBundle bundleForClass:self.class] pathForResource:@"white_house_lvl_0" ofType:@"geojson"]; + NSURL *geoJSONURL = [NSURL fileURLWithPath:filePath]; + MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"white-house" URL:geoJSONURL options:nil]; + [self.mapView.style addSource:source]; + + MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"indoor-building-fil" source:source]; + fillLayer.fillColor = [NSExpression expressionForConstantValue:[UIColor whiteColor]]; + [self.mapView.style addLayer:fillLayer]; + + MGLLineStyleLayer *lineFillLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"indoor-building-line" source:source]; + lineFillLayer.lineColor = [NSExpression expressionForConstantValue:[UIColor blackColor]]; + [self.mapView.style addLayer:lineFillLayer]; } - (BOOL)mapView:(MGLMapView *)mapView shouldChangeFromCamera:(MGLMapCamera *)oldCamera toCamera:(MGLMapCamera *)newCamera { diff --git a/platform/ios/app/coordinates.json b/platform/ios/app/coordinates.json new file mode 100644 index 0000000000..32f5f7ff7d --- /dev/null +++ b/platform/ios/app/coordinates.json @@ -0,0 +1,276 @@ +{
+ "coordinates":[
+ {
+ "latitude":38.8999341,
+ "longitude":-77.0336866
+ },
+ {
+ "latitude":38.8998548,
+ "longitude":-77.0336813
+ },
+ {
+ "latitude":38.8998005,
+ "longitude":-77.0336813
+ },
+ {
+ "latitude":38.8997337,
+ "longitude":-77.0336813
+ },
+ {
+ "latitude":38.8996711,
+ "longitude":-77.0336813
+ },
+ {
+ "latitude":38.8996001,
+ "longitude":-77.0336705
+ },
+ {
+ "latitude":38.8995250,
+ "longitude":-77.0336759
+ },
+ {
+ "latitude":38.8994498,
+ "longitude":-77.0336759
+ },
+ {
+ "latitude":38.8993538,
+ "longitude":-77.0336759
+ },
+ {
+ "latitude":38.8992787,
+ "longitude":-77.0336705
+ },
+ {
+ "latitude":38.8992077,
+ "longitude":-77.0336705
+ },
+ {
+ "latitude":38.8991200,
+ "longitude":-77.0336705
+ },
+ {
+ "latitude":38.8990282,
+ "longitude":-77.0336705
+ },
+ {
+ "latitude":38.8989447,
+ "longitude":-77.0336705
+ },
+ {
+ "latitude":38.8988403,
+ "longitude":-77.0336652
+ },
+ {
+ "latitude":38.8988069,
+ "longitude":-77.0338261
+ },
+ {
+ "latitude":38.8987860,
+ "longitude":-77.0339763
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0341855
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0342875
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0344323
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0345396
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0346844
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0348293
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0349526
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0350331
+ },
+ {
+ "latitude":38.8987735,
+ "longitude":-77.0351243
+ },
+ {
+ "latitude":38.8986900,
+ "longitude":-77.0351243
+ },
+ {
+ "latitude":38.8986357,
+ "longitude":-77.0351243
+ },
+ {
+ "latitude":38.8985815,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8984896,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8984312,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8983727,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8983059,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8982266,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8981556,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8980846,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8980220,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8979510,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8978842,
+ "longitude":-77.0351297
+ },
+ {
+ "latitude":38.8978759,
+ "longitude":-77.0351887
+ },
+ {
+ "latitude":38.8978759,
+ "longitude":-77.0352584
+ },
+ {
+ "latitude":38.8978675,
+ "longitude":-77.0353442
+ },
+ {
+ "latitude":38.8978634,
+ "longitude":-77.0354193
+ },
+ {
+ "latitude":38.8978508,
+ "longitude":-77.0354676
+ },
+ {
+ "latitude":38.8978341,
+ "longitude":-77.0355052
+ },
+ {
+ "latitude":38.8978007,
+ "longitude":-77.0355213
+ },
+ {
+ "latitude":38.8977673,
+ "longitude":-77.0355213
+ },
+ {
+ "latitude":38.8977256,
+ "longitude":-77.0355213
+ },
+ {
+ "latitude":38.8976755,
+ "longitude":-77.0355213
+ },
+ {
+ "latitude":38.8976254,
+ "longitude":-77.0355213
+ },
+ {
+ "latitude":38.8976212,
+ "longitude":-77.0356071
+ },
+ {
+ "latitude":38.8976212,
+ "longitude":-77.0356500
+ },
+ {
+ "latitude":38.8976212,
+ "longitude":-77.0357198
+ },
+ {
+ "latitude":38.8976170,
+ "longitude":-77.0357841
+ },
+ {
+ "latitude":38.8976337,
+ "longitude":-77.0358270
+ },
+ {
+ "latitude":38.8976421,
+ "longitude":-77.0358592
+ },
+ {
+ "latitude":38.8976463,
+ "longitude":-77.0359129
+ },
+ {
+ "latitude":38.8976463,
+ "longitude":-77.0359612
+ },
+ {
+ "latitude":38.8976463,
+ "longitude":-77.0360094
+ },
+ {
+ "latitude":38.8976463,
+ "longitude":-77.0360631
+ },
+ {
+ "latitude":38.8976463,
+ "longitude":-77.0361274
+ },
+ {
+ "latitude":38.8976421,
+ "longitude":-77.0361865
+ },
+ {
+ "latitude":38.8976421,
+ "longitude":-77.0362508
+ },
+ {
+ "latitude":38.8976421,
+ "longitude":-77.0362991
+ },
+ {
+ "latitude":38.8976421,
+ "longitude":-77.0363528
+ },
+ {
+ "latitude":38.8976463,
+ "longitude":-77.0364064
+ },
+ {
+ "latitude":38.8976463,
+ "longitude":-77.0364600
+ },
+ {
+ "latitude":38.8976797,
+ "longitude":-77.0365298
+ }
+ ]
+}
\ No newline at end of file diff --git a/platform/ios/app/white_house_lvl_0.geojson b/platform/ios/app/white_house_lvl_0.geojson new file mode 100644 index 0000000000..deb2be2117 --- /dev/null +++ b/platform/ios/app/white_house_lvl_0.geojson @@ -0,0 +1,4747 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03751819528335, + 38.897399261725695 + ], + [ + -77.03749242985906, + 38.89739927665259 + ], + [ + -77.03748909188833, + 38.89739915565516 + ], + [ + -77.03748908456248, + 38.89738675560936 + ], + [ + -77.03748908350643, + 38.89738496808075 + ], + [ + -77.03751818679, + 38.897384957666226 + ], + [ + -77.03751819528335, + 38.897399261725695 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0356628599211, + 38.89752427678342 + ], + [ + -77.03566324808605, + 38.897487641651075 + ], + [ + -77.03561744383563, + 38.89748728307421 + ], + [ + -77.03557319695129, + 38.897486998421535 + ], + [ + -77.03557285903454, + 38.897523681983074 + ], + [ + -77.0356628599211, + 38.89752427678342 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03678358115228, + 38.89764957286611 + ], + [ + -77.03678360162519, + 38.897628123025065 + ], + [ + -77.03685394944657, + 38.89762824111322 + ], + [ + -77.03685392062708, + 38.897649742921466 + ], + [ + -77.03678358115228, + 38.89764957286611 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03748909188833, + 38.89739915565516 + ], + [ + -77.0374565306735, + 38.89739921192618 + ], + [ + -77.03745892355825, + 38.897394704755634 + ], + [ + -77.03746101772985, + 38.897386575048756 + ], + [ + -77.03748908456248, + 38.89738675560936 + ], + [ + -77.03748909188833, + 38.89739915565516 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03566324808605, + 38.897487641651075 + ], + [ + -77.03566366824901, + 38.89744798651388 + ], + [ + -77.03561786839413, + 38.89744796201868 + ], + [ + -77.03561744383563, + 38.89748728307421 + ], + [ + -77.03566324808605, + 38.897487641651075 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03745729932719, + 38.89735249682294 + ], + [ + -77.03745729932719, + 38.89733339997339 + ], + [ + -77.03751834198142, + 38.897333589409016 + ], + [ + -77.03751822629172, + 38.897371882628725 + ], + [ + -77.0374621236535, + 38.89737152296883 + ], + [ + -77.03746169411053, + 38.8973662797251 + ], + [ + -77.03745876466279, + 38.8973569969156 + ], + [ + -77.03745729932719, + 38.89735249682294 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03561786839413, + 38.89744796201868 + ], + [ + -77.03557355958654, + 38.89744763144458 + ], + [ + -77.03557319695129, + 38.897486998421535 + ], + [ + -77.03561744383563, + 38.89748728307421 + ], + [ + -77.03561786839413, + 38.89744796201868 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03678360162519, + 38.897628123025065 + ], + [ + -77.03678357467031, + 38.89760582977174 + ], + [ + -77.03678378084892, + 38.89755790876986 + ], + [ + -77.03685400727859, + 38.897557949224044 + ], + [ + -77.03685399255902, + 38.897596075523055 + ], + [ + -77.03685394944657, + 38.89762824111322 + ], + [ + -77.03678360162519, + 38.897628123025065 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03751822629172, + 38.897371882628725 + ], + [ + -77.03751818679, + 38.897384957666226 + ], + [ + -77.03748908350643, + 38.89738496808075 + ], + [ + -77.03748908456248, + 38.89738675560936 + ], + [ + -77.03746101772985, + 38.897386575048756 + ], + [ + -77.03746238828211, + 38.897374753174816 + ], + [ + -77.0374621236535, + 38.89737152296883 + ], + [ + -77.03751822629172, + 38.897371882628725 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03743275267085, + 38.897439007993356 + ], + [ + -77.03743276965209, + 38.89745687129455 + ], + [ + -77.03741710894761, + 38.89745688031189 + ], + [ + -77.0374171162561, + 38.89746456837155 + ], + [ + -77.03738406237852, + 38.897464587403846 + ], + [ + -77.0373834915806, + 38.89742527697119 + ], + [ + -77.03739026957358, + 38.89742771879905 + ], + [ + -77.03740238153618, + 38.897430092249245 + ], + [ + -77.03741251711821, + 38.897429326634594 + ], + [ + -77.03741749932718, + 38.89742879997338 + ], + [ + -77.03742300546142, + 38.89742804382714 + ], + [ + -77.03743230713577, + 38.897423471911345 + ], + [ + -77.03743275267085, + 38.897439007993356 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03678358115228, + 38.89764957286611 + ], + [ + -77.03674399708453, + 38.8976495957241 + ], + [ + -77.03674412929708, + 38.89762803292509 + ], + [ + -77.03678360162519, + 38.897628123025065 + ], + [ + -77.03678358115228, + 38.89764957286611 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03782206747196, + 38.89743105521485 + ], + [ + -77.03779828286902, + 38.897431174806464 + ], + [ + -77.0377984763624, + 38.89745460202331 + ], + [ + -77.0378219355793, + 38.89745447655917 + ], + [ + -77.03782206747196, + 38.89743105521485 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03674412929708, + 38.89762803292509 + ], + [ + -77.03674428021733, + 38.897605560404095 + ], + [ + -77.03678357467031, + 38.89760582977174 + ], + [ + -77.03678360162519, + 38.897628123025065 + ], + [ + -77.03674412929708, + 38.89762803292509 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0377984763624, + 38.89745460202331 + ], + [ + -77.03774328665504, + 38.897454461051474 + ], + [ + -77.03774337601037, + 38.89743950917589 + ], + [ + -77.03774333620927, + 38.897429200785574 + ], + [ + -77.03774338911107, + 38.89742034869453 + ], + [ + -77.03782212415496, + 38.897420549854964 + ], + [ + -77.03782206747196, + 38.89743105521485 + ], + [ + -77.03779828286902, + 38.897431174806464 + ], + [ + -77.0377984763624, + 38.89745460202331 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03674428021733, + 38.897605560404095 + ], + [ + -77.03674451811948, + 38.897557819650004 + ], + [ + -77.03678378084892, + 38.89755790876986 + ], + [ + -77.03678357467031, + 38.89760582977174 + ], + [ + -77.03674428021733, + 38.897605560404095 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03557355958654, + 38.89744763144458 + ], + [ + -77.03557380755844, + 38.89742071208779 + ], + [ + -77.03557412923122, + 38.89738579188495 + ], + [ + -77.0356181596354, + 38.89738603755532 + ], + [ + -77.0356179848805, + 38.897415387502384 + ], + [ + -77.03561786839413, + 38.89744796201868 + ], + [ + -77.03557355958654, + 38.89744763144458 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03736112599921, + 38.89740562991937 + ], + [ + -77.03736104079945, + 38.8974282777779 + ], + [ + -77.03732468820873, + 38.8974281949439 + ], + [ + -77.0373243162135, + 38.8974779834762 + ], + [ + -77.03741684195018, + 38.8974785827428 + ], + [ + -77.0374171162561, + 38.89746456837155 + ], + [ + -77.03738406237852, + 38.897464587403846 + ], + [ + -77.0373834915806, + 38.89742527697119 + ], + [ + -77.03737709319297, + 38.89742297189925 + ], + [ + -77.03736859902138, + 38.89741612499999 + ], + [ + -77.03736112599921, + 38.89740562991937 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03774328665504, + 38.897454461051474 + ], + [ + -77.03774321689156, + 38.89746613460469 + ], + [ + -77.03774242730863, + 38.89751970505121 + ], + [ + -77.0377424693756, + 38.89754171714957 + ], + [ + -77.03782145301793, + 38.89754214439088 + ], + [ + -77.0378219355793, + 38.89745447655917 + ], + [ + -77.0377984763624, + 38.89745460202331 + ], + [ + -77.03774328665504, + 38.897454461051474 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03566366824901, + 38.89744798651388 + ], + [ + -77.03566401287345, + 38.89741546071307 + ], + [ + -77.0356179848805, + 38.897415387502384 + ], + [ + -77.03561786839413, + 38.89744796201868 + ], + [ + -77.03566366824901, + 38.89744798651388 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03674428021733, + 38.897605560404095 + ], + [ + -77.03669907607481, + 38.89760542396934 + ], + [ + -77.0366989076499, + 38.897649554063 + ], + [ + -77.03674399708453, + 38.8976495957241 + ], + [ + -77.03674412929708, + 38.89762803292509 + ], + [ + -77.03674428021733, + 38.897605560404095 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0377424693756, + 38.89754171714957 + ], + [ + -77.03774235211263, + 38.89757030970792 + ], + [ + -77.03774171577182, + 38.897606156838435 + ], + [ + -77.03782109932719, + 38.8976063999734 + ], + [ + -77.03782145301793, + 38.89754214439088 + ], + [ + -77.0377424693756, + 38.89754171714957 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03741684195018, + 38.8974785827428 + ], + [ + -77.03741638711098, + 38.897523495525526 + ], + [ + -77.03741550637595, + 38.89760110801017 + ], + [ + -77.03732282141236, + 38.897600470946045 + ], + [ + -77.0373243162135, + 38.8974779834762 + ], + [ + -77.03741684195018, + 38.8974785827428 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03566401287345, + 38.89741546071307 + ], + [ + -77.03574246582338, + 38.8974159642015 + ], + [ + -77.03574265616403, + 38.89738577735333 + ], + [ + -77.03574262934107, + 38.89738250333326 + ], + [ + -77.03561819858677, + 38.897381809064186 + ], + [ + -77.0356181596354, + 38.89738603755532 + ], + [ + -77.0356179848805, + 38.897415387502384 + ], + [ + -77.03566401287345, + 38.89741546071307 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03669907607481, + 38.89760542396934 + ], + [ + -77.03669925915283, + 38.89755745447133 + ], + [ + -77.03674451811948, + 38.897557819650004 + ], + [ + -77.03674428021733, + 38.897605560404095 + ], + [ + -77.03669907607481, + 38.89760542396934 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03774235211263, + 38.89757030970792 + ], + [ + -77.03770898827014, + 38.89757028411856 + ], + [ + -77.0377087304228, + 38.89760608360185 + ], + [ + -77.03774171577182, + 38.897606156838435 + ], + [ + -77.03774235211263, + 38.89757030970792 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03745667922286, + 38.897453028841966 + ], + [ + -77.03744986031123, + 38.89745459904312 + ], + [ + -77.0374424842365, + 38.897453816236016 + ], + [ + -77.03743644926617, + 38.897450685007485 + ], + [ + -77.037433347962, + 38.8974447487197 + ], + [ + -77.03743275267085, + 38.897439007993356 + ], + [ + -77.03743276965209, + 38.89745687129455 + ], + [ + -77.03741710894761, + 38.89745688031189 + ], + [ + -77.0374171162561, + 38.89746456837155 + ], + [ + -77.03741684195018, + 38.8974785827428 + ], + [ + -77.03741638711098, + 38.897523495525526 + ], + [ + -77.03745651459585, + 38.897523771339486 + ], + [ + -77.03745631268868, + 38.89751809443299 + ], + [ + -77.03745641726218, + 38.897495498164346 + ], + [ + -77.03745656131528, + 38.89747214413154 + ], + [ + -77.03745664965277, + 38.89746314468681 + ], + [ + -77.03745667922286, + 38.897453028841966 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03615419842413, + 38.897690227944395 + ], + [ + -77.03615420117035, + 38.89769596045014 + ], + [ + -77.03625283598619, + 38.897696210037196 + ], + [ + -77.0362530185113, + 38.89764922411891 + ], + [ + -77.03625299711953, + 38.89759788744124 + ], + [ + -77.03585891300384, + 38.89759651414509 + ], + [ + -77.0358588870548, + 38.897542347069944 + ], + [ + -77.03578208923254, + 38.89754236935408 + ], + [ + -77.03578212051596, + 38.89760767155229 + ], + [ + -77.03578213218975, + 38.89763203989219 + ], + [ + -77.03583406293478, + 38.89763202482366 + ], + [ + -77.03615417049708, + 38.897631931939415 + ], + [ + -77.03615419842413, + 38.897690227944395 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03770898827014, + 38.89757028411856 + ], + [ + -77.03766399136805, + 38.89757024960688 + ], + [ + -77.03766397252076, + 38.897605834736616 + ], + [ + -77.0376904992986, + 38.89760600393405 + ], + [ + -77.0377087304228, + 38.89760608360185 + ], + [ + -77.03770898827014, + 38.89757028411856 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03660777015914, + 38.89755724297624 + ], + [ + -77.03660741865625, + 38.897649342568194 + ], + [ + -77.0366989076499, + 38.897649554063 + ], + [ + -77.03669907607481, + 38.89760542396934 + ], + [ + -77.03669925915283, + 38.89755745447133 + ], + [ + -77.03665970023154, + 38.897557363022976 + ], + [ + -77.03660777015914, + 38.89755724297624 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03574246582338, + 38.8974159642015 + ], + [ + -77.03578416865525, + 38.89741620480225 + ], + [ + -77.03578438986949, + 38.8973860247361 + ], + [ + -77.03574265616403, + 38.89738577735333 + ], + [ + -77.03574246582338, + 38.8974159642015 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03766397252076, + 38.897605834736616 + ], + [ + -77.03762151939162, + 38.89760583196151 + ], + [ + -77.03762150300318, + 38.89756869890355 + ], + [ + -77.0376215443986, + 38.89755988318841 + ], + [ + -77.03762548619554, + 38.89755989439957 + ], + [ + -77.03765860051531, + 38.897559959357885 + ], + [ + -77.03766400442699, + 38.897559952111955 + ], + [ + -77.03766399136805, + 38.89757024960688 + ], + [ + -77.03766397252076, + 38.897605834736616 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03660777015914, + 38.89755724297624 + ], + [ + -77.03660240795237, + 38.89754713330609 + ], + [ + -77.03659570242982, + 38.8975413927279 + ], + [ + -77.03658530886992, + 38.89753356466602 + ], + [ + -77.03657290365321, + 38.897528085022124 + ], + [ + -77.03655982788428, + 38.89752469286142 + ], + [ + -77.03654842849595, + 38.897523910055135 + ], + [ + -77.03653669383151, + 38.897524170990565 + ], + [ + -77.03652361806257, + 38.897527563151264 + ], + [ + -77.03651456560716, + 38.8975319990535 + ], + [ + -77.03650995556039, + 38.89753467364149 + ], + [ + -77.03650492641847, + 38.8975381962694 + ], + [ + -77.03649914290531, + 38.89754315404169 + ], + [ + -77.03649310793502, + 38.89754922078897 + ], + [ + -77.03648847298408, + 38.89755730579546 + ], + [ + -77.03648818831891, + 38.89764960098017 + ], + [ + -77.03660741865625, + 38.897649342568194 + ], + [ + -77.03660777015914, + 38.89755724297624 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03625263113308, + 38.897756207456894 + ], + [ + -77.03631138385018, + 38.8977562442885 + ], + [ + -77.03631106079871, + 38.897795823000344 + ], + [ + -77.03625219932721, + 38.89779469997336 + ], + [ + -77.03625263113308, + 38.897756207456894 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03745651459585, + 38.897523771339486 + ], + [ + -77.03741638711098, + 38.897523495525526 + ], + [ + -77.03741550637595, + 38.89760110801017 + ], + [ + -77.03732282141236, + 38.897600470946045 + ], + [ + -77.0373227212202, + 38.897609300114965 + ], + [ + -77.03732253643419, + 38.897625582712976 + ], + [ + -77.03739796223361, + 38.897626082467895 + ], + [ + -77.03743606704064, + 38.89762642598428 + ], + [ + -77.03743649052979, + 38.897597500054445 + ], + [ + -77.03745567643679, + 38.89759763192756 + ], + [ + -77.03745622206026, + 38.897549550286 + ], + [ + -77.03745634873275, + 38.89753838759868 + ], + [ + -77.03745651459585, + 38.897523771339486 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03574246582338, + 38.8974159642015 + ], + [ + -77.03574210584037, + 38.89744993955133 + ], + [ + -77.03578383273519, + 38.89745026780629 + ], + [ + -77.03578416865525, + 38.89741620480225 + ], + [ + -77.03574246582338, + 38.8974159642015 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03631138385018, + 38.8977562442885 + ], + [ + -77.03631141820033, + 38.897738639076856 + ], + [ + -77.03625296640921, + 38.897738724836955 + ], + [ + -77.03625263113308, + 38.897756207456894 + ], + [ + -77.03631138385018, + 38.8977562442885 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03762150300318, + 38.89756869890355 + ], + [ + -77.03760413176437, + 38.897568716190676 + ], + [ + -77.03758591025813, + 38.89756864025133 + ], + [ + -77.03758571675016, + 38.89760568491696 + ], + [ + -77.0375907993272, + 38.897605699973376 + ], + [ + -77.03762151939162, + 38.89760583196151 + ], + [ + -77.03762150300318, + 38.89756869890355 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03574210584037, + 38.89744993955133 + ], + [ + -77.03569859801607, + 38.897449660330786 + ], + [ + -77.03569800324853, + 38.89750579470883 + ], + [ + -77.03578314936016, + 38.89750642224726 + ], + [ + -77.03578383273519, + 38.89745026780629 + ], + [ + -77.03574210584037, + 38.89744993955133 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03743542803652, + 38.89765390626939 + ], + [ + -77.03739766020212, + 38.89765369299223 + ], + [ + -77.03739796223361, + 38.897626082467895 + ], + [ + -77.03743606704064, + 38.89762642598428 + ], + [ + -77.03743542803652, + 38.89765390626939 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03631141820033, + 38.897738639076856 + ], + [ + -77.03631152214317, + 38.89770358668694 + ], + [ + -77.03625280786692, + 38.89770344853483 + ], + [ + -77.03625296640921, + 38.897738724836955 + ], + [ + -77.03631141820033, + 38.897738639076856 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03574210584037, + 38.89744993955133 + ], + [ + -77.03569859801607, + 38.897449660330786 + ], + [ + -77.03569800324853, + 38.89750579470883 + ], + [ + -77.03569761031001, + 38.89754288036004 + ], + [ + -77.03566266518436, + 38.89754265609266 + ], + [ + -77.0356628599211, + 38.89752427678342 + ], + [ + -77.03566324808605, + 38.897487641651075 + ], + [ + -77.03566366824901, + 38.89744798651388 + ], + [ + -77.03566401287345, + 38.89741546071307 + ], + [ + -77.03574246582338, + 38.8974159642015 + ], + [ + -77.03574210584037, + 38.89744993955133 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03758591025813, + 38.89756864025133 + ], + [ + -77.03755047350235, + 38.89756849256632 + ], + [ + -77.03755016496176, + 38.89760561192253 + ], + [ + -77.03758571675016, + 38.89760568491696 + ], + [ + -77.03758591025813, + 38.89756864025133 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03739766020212, + 38.89765369299223 + ], + [ + -77.03739206188246, + 38.897653655899035 + ], + [ + -77.03739200137744, + 38.89765918702502 + ], + [ + -77.03739185572802, + 38.89768927426565 + ], + [ + -77.0374350907632, + 38.89768965465643 + ], + [ + -77.03743542803652, + 38.89765390626939 + ], + [ + -77.03739766020212, + 38.89765369299223 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03648847298408, + 38.89755730579546 + ], + [ + -77.036447999234, + 38.897557230183764 + ], + [ + -77.03639833793211, + 38.89755717750558 + ], + [ + -77.03639784436801, + 38.8976495112781 + ], + [ + -77.03648818831891, + 38.89764960098017 + ], + [ + -77.03648847298408, + 38.89755730579546 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03631152214317, + 38.89770358668694 + ], + [ + -77.03639749504079, + 38.897703788977424 + ], + [ + -77.03639863633428, + 38.897795073364584 + ], + [ + -77.03631106079871, + 38.897795823000344 + ], + [ + -77.03631138385018, + 38.8977562442885 + ], + [ + -77.03631141820033, + 38.897738639076856 + ], + [ + -77.03631152214317, + 38.89770358668694 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03583386669877, + 38.89768952413397 + ], + [ + -77.03583396330619, + 38.897649299800825 + ], + [ + -77.03583406293478, + 38.89763202482366 + ], + [ + -77.03578213218975, + 38.89763203989219 + ], + [ + -77.0357820064609, + 38.89764788177072 + ], + [ + -77.03578195938897, + 38.897671543732564 + ], + [ + -77.03578191330874, + 38.897694707196194 + ], + [ + -77.03583385626328, + 38.89769476978506 + ], + [ + -77.03583386669877, + 38.89768952413397 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0377424693756, + 38.89754171714957 + ], + [ + -77.03771419772218, + 38.89754169613175 + ], + [ + -77.03769919747957, + 38.89754164183368 + ], + [ + -77.03769924857713, + 38.897533091661764 + ], + [ + -77.03767899194105, + 38.89753298437497 + ], + [ + -77.03767905159553, + 38.897559931935795 + ], + [ + -77.03766400442699, + 38.897559952111955 + ], + [ + -77.03766399136805, + 38.89757024960688 + ], + [ + -77.03770898827014, + 38.89757028411856 + ], + [ + -77.03774235211263, + 38.89757030970792 + ], + [ + -77.0377424693756, + 38.89754171714957 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03739200137744, + 38.89765918702502 + ], + [ + -77.03735603885885, + 38.89765894874533 + ], + [ + -77.03735574968339, + 38.897689114418135 + ], + [ + -77.03739185572802, + 38.89768927426565 + ], + [ + -77.03739200137744, + 38.89765918702502 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03639749504079, + 38.897703788977424 + ], + [ + -77.0364637606203, + 38.89770383619139 + ], + [ + -77.03646401583393, + 38.897763437657446 + ], + [ + -77.03646362269089, + 38.89779510376502 + ], + [ + -77.03639863633428, + 38.897795073364584 + ], + [ + -77.03639749504079, + 38.897703788977424 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03639833793211, + 38.89755717750558 + ], + [ + -77.03631071136228, + 38.89755689379273 + ], + [ + -77.03631021779809, + 38.8976492275656 + ], + [ + -77.03639784436801, + 38.8976495112781 + ], + [ + -77.03639833793211, + 38.89755717750558 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03774242730863, + 38.89751970505121 + ], + [ + -77.03771433071972, + 38.89751944161239 + ], + [ + -77.03771419772218, + 38.89754169613175 + ], + [ + -77.0377424693756, + 38.89754171714957 + ], + [ + -77.03774242730863, + 38.89751970505121 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03583396330619, + 38.897649299800825 + ], + [ + -77.03586621985666, + 38.89764940979205 + ], + [ + -77.0358659955964, + 38.897689245399775 + ], + [ + -77.03583386669877, + 38.89768952413397 + ], + [ + -77.03583396330619, + 38.897649299800825 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03735603885885, + 38.89765894874533 + ], + [ + -77.03732884475306, + 38.89765876856313 + ], + [ + -77.03732843944556, + 38.89768162545501 + ], + [ + -77.03732836743096, + 38.89768882312813 + ], + [ + -77.03735574968339, + 38.897689114418135 + ], + [ + -77.03735603885885, + 38.89765894874533 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0364637606203, + 38.89770383619139 + ], + [ + -77.03653165367496, + 38.897703756922745 + ], + [ + -77.03653158781924, + 38.89776355191558 + ], + [ + -77.03646401583393, + 38.897763437657446 + ], + [ + -77.0364637606203, + 38.89770383619139 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03631071136228, + 38.89755689379273 + ], + [ + -77.03625299932719, + 38.897556799973366 + ], + [ + -77.03625299711953, + 38.89759788744124 + ], + [ + -77.0362530185113, + 38.89764922411891 + ], + [ + -77.03631021779809, + 38.8976492275656 + ], + [ + -77.03631071136228, + 38.89755689379273 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03771433071972, + 38.89751944161239 + ], + [ + -77.03771464991101, + 38.897466031197446 + ], + [ + -77.03774321689156, + 38.89746613460469 + ], + [ + -77.03774242730863, + 38.89751970505121 + ], + [ + -77.03771433071972, + 38.89751944161239 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03583406293478, + 38.89763202482366 + ], + [ + -77.03615417049708, + 38.897631931939415 + ], + [ + -77.03615419842413, + 38.897690227944395 + ], + [ + -77.0358659955964, + 38.897689245399775 + ], + [ + -77.03586621985666, + 38.89764940979205 + ], + [ + -77.03583396330619, + 38.897649299800825 + ], + [ + -77.03583406293478, + 38.89763202482366 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03732843944556, + 38.89768162545501 + ], + [ + -77.03731443868115, + 38.897681540607515 + ], + [ + -77.03731487474741, + 38.897637956873695 + ], + [ + -77.03732907138367, + 38.89763805089542 + ], + [ + -77.03732884475306, + 38.89765876856313 + ], + [ + -77.03732843944556, + 38.89768162545501 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03646401583393, + 38.897763437657446 + ], + [ + -77.03653158781924, + 38.89776355191558 + ], + [ + -77.03656886659812, + 38.89776357701148 + ], + [ + -77.0365686411002, + 38.89779523681366 + ], + [ + -77.03646362269089, + 38.89779510376502 + ], + [ + -77.03646401583393, + 38.897763437657446 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03696205258261, + 38.897624174370016 + ], + [ + -77.03696209012664, + 38.89759616328111 + ], + [ + -77.03685399255902, + 38.897596075523055 + ], + [ + -77.03685394944657, + 38.89762824111322 + ], + [ + -77.03685392062708, + 38.897649742921466 + ], + [ + -77.03685387088443, + 38.89768685518885 + ], + [ + -77.0369317338318, + 38.89768691840108 + ], + [ + -77.03693181796235, + 38.89762414982432 + ], + [ + -77.03696205258261, + 38.897624174370016 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03769924857713, + 38.897533091661764 + ], + [ + -77.0376995702955, + 38.89747925840778 + ], + [ + -77.0376419642402, + 38.89747905479102 + ], + [ + -77.03759760920929, + 38.89747904728604 + ], + [ + -77.03759747168822, + 38.89749589356089 + ], + [ + -77.03759736711471, + 38.89751848982938 + ], + [ + -77.03759724492583, + 38.897532783003065 + ], + [ + -77.03760437879923, + 38.89753281273398 + ], + [ + -77.03762561306043, + 38.89753287680498 + ], + [ + -77.03765854086082, + 38.8975330117971 + ], + [ + -77.03767899194105, + 38.89753298437497 + ], + [ + -77.03769924857713, + 38.897533091661764 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03739200137744, + 38.89765918702502 + ], + [ + -77.03735603885885, + 38.89765894874533 + ], + [ + -77.03732884475306, + 38.89765876856313 + ], + [ + -77.03732907138367, + 38.89763805089542 + ], + [ + -77.03731487474741, + 38.897637956873695 + ], + [ + -77.03731499740934, + 38.897625697113696 + ], + [ + -77.03732253643419, + 38.897625582712976 + ], + [ + -77.03739796223361, + 38.897626082467895 + ], + [ + -77.03739766020212, + 38.89765369299223 + ], + [ + -77.03739206188246, + 38.897653655899035 + ], + [ + -77.03739200137744, + 38.89765918702502 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03656886659812, + 38.89776357701148 + ], + [ + -77.0365855673788, + 38.89776369970041 + ], + [ + -77.03664322888531, + 38.897763688511446 + ], + [ + -77.03664319932719, + 38.89779559997336 + ], + [ + -77.03663889932722, + 38.89779560539191 + ], + [ + -77.0365686411002, + 38.89779523681366 + ], + [ + -77.03656886659812, + 38.89776357701148 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03765860051531, + 38.897559959357885 + ], + [ + -77.03765854086082, + 38.8975330117971 + ], + [ + -77.03767899194105, + 38.89753298437497 + ], + [ + -77.03767905159553, + 38.897559931935795 + ], + [ + -77.03766400442699, + 38.897559952111955 + ], + [ + -77.03765860051531, + 38.897559959357885 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03731499740934, + 38.897625697113696 + ], + [ + -77.0371657773497, + 38.89762512198135 + ], + [ + -77.03716527270976, + 38.897672434197894 + ], + [ + -77.03716517119469, + 38.89768802902353 + ], + [ + -77.03729678635206, + 38.89768863174043 + ], + [ + -77.03732836743096, + 38.89768882312813 + ], + [ + -77.03732843944556, + 38.89768162545501 + ], + [ + -77.03731443868115, + 38.897681540607515 + ], + [ + -77.03731487474741, + 38.897637956873695 + ], + [ + -77.03731499740934, + 38.897625697113696 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0365855673788, + 38.89776369970041 + ], + [ + -77.03658554796348, + 38.897703693998366 + ], + [ + -77.03653165367496, + 38.897703756922745 + ], + [ + -77.03653158781924, + 38.89776355191558 + ], + [ + -77.03656886659812, + 38.89776357701148 + ], + [ + -77.0365855673788, + 38.89776369970041 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03762548619554, + 38.89755989439957 + ], + [ + -77.03762561306043, + 38.89753287680498 + ], + [ + -77.03760437879923, + 38.89753281273398 + ], + [ + -77.03760413176437, + 38.897568716190676 + ], + [ + -77.03762150300318, + 38.89756869890355 + ], + [ + -77.0376215443986, + 38.89755988318841 + ], + [ + -77.03762548619554, + 38.89755989439957 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03658554796348, + 38.897703693998366 + ], + [ + -77.03664332743242, + 38.89770362653781 + ], + [ + -77.03664318923556, + 38.89773070832236 + ], + [ + -77.03664322888531, + 38.897763688511446 + ], + [ + -77.0365855673788, + 38.89776369970041 + ], + [ + -77.03658554796348, + 38.897703693998366 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03716527270976, + 38.897672434197894 + ], + [ + -77.03714948155496, + 38.89767237193593 + ], + [ + -77.03714959344696, + 38.897650657231765 + ], + [ + -77.0371500515027, + 38.8976247961259 + ], + [ + -77.0371657773497, + 38.89762512198135 + ], + [ + -77.03716527270976, + 38.897672434197894 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03765854086082, + 38.8975330117971 + ], + [ + -77.03762561306043, + 38.89753287680498 + ], + [ + -77.03762548619554, + 38.89755989439957 + ], + [ + -77.03765860051531, + 38.897559959357885 + ], + [ + -77.03765854086082, + 38.8975330117971 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03664332743242, + 38.89770362653781 + ], + [ + -77.03666248961544, + 38.897703604165024 + ], + [ + -77.03666252226041, + 38.89773069424425 + ], + [ + -77.03664318923556, + 38.89773070832236 + ], + [ + -77.03664332743242, + 38.89770362653781 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03714948155496, + 38.89767237193593 + ], + [ + -77.03712507513444, + 38.8976722757054 + ], + [ + -77.0371252175632, + 38.897650395674155 + ], + [ + -77.03714959344696, + 38.897650657231765 + ], + [ + -77.03714948155496, + 38.89767237193593 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0376995702955, + 38.89747925840778 + ], + [ + -77.03769987739432, + 38.89742787140515 + ], + [ + -77.03768939067875, + 38.89742783344514 + ], + [ + -77.03768943711752, + 38.89742006281795 + ], + [ + -77.03764198103237, + 38.897419891035504 + ], + [ + -77.0376419642402, + 38.89747905479102 + ], + [ + -77.0376995702955, + 38.89747925840778 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0371252175632, + 38.897650395674155 + ], + [ + -77.03712538375312, + 38.897624865414556 + ], + [ + -77.0371500515027, + 38.8976247961259 + ], + [ + -77.03714959344696, + 38.897650657231765 + ], + [ + -77.0371252175632, + 38.897650395674155 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03666248961544, + 38.897703604165024 + ], + [ + -77.03670258300679, + 38.8977035573539 + ], + [ + -77.03670278486749, + 38.89777153676942 + ], + [ + -77.03670254147833, + 38.89779635216258 + ], + [ + -77.03664319932719, + 38.89779559997336 + ], + [ + -77.03664322888531, + 38.897763688511446 + ], + [ + -77.03664318923556, + 38.89773070832236 + ], + [ + -77.03666252226041, + 38.89773069424425 + ], + [ + -77.03666248961544, + 38.897703604165024 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03764198103237, + 38.897419891035504 + ], + [ + -77.03759768204795, + 38.89741991239419 + ], + [ + -77.03759760920929, + 38.89747904728604 + ], + [ + -77.0376419642402, + 38.89747905479102 + ], + [ + -77.03764198103237, + 38.897419891035504 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03716517119469, + 38.89768802902353 + ], + [ + -77.03705108372742, + 38.897687579195335 + ], + [ + -77.0369317338318, + 38.89768691840108 + ], + [ + -77.03693181796235, + 38.89762414982432 + ], + [ + -77.03696205258261, + 38.897624174370016 + ], + [ + -77.03712538375312, + 38.897624865414556 + ], + [ + -77.0371252175632, + 38.897650395674155 + ], + [ + -77.03712507513444, + 38.8976722757054 + ], + [ + -77.03714948155496, + 38.89767237193593 + ], + [ + -77.03716527270976, + 38.897672434197894 + ], + [ + -77.03716517119469, + 38.89768802902353 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03670258300679, + 38.8977035573539 + ], + [ + -77.03678391028022, + 38.89770346240009 + ], + [ + -77.03678374243779, + 38.89771858650649 + ], + [ + -77.03679750305476, + 38.89771854892652 + ], + [ + -77.03679774079657, + 38.89777127744692 + ], + [ + -77.03670278486749, + 38.89777153676942 + ], + [ + -77.03670258300679, + 38.8977035573539 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03774337601037, + 38.89743950917589 + ], + [ + -77.03771939136696, + 38.897439422355845 + ], + [ + -77.03771945296972, + 38.89742911433259 + ], + [ + -77.03774333620927, + 38.897429200785574 + ], + [ + -77.03774337601037, + 38.89743950917589 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03670278486749, + 38.89777153676942 + ], + [ + -77.03670254147833, + 38.89779635216258 + ], + [ + -77.03685319932718, + 38.89779599997336 + ], + [ + -77.03685389485014, + 38.897703114204056 + ], + [ + -77.03678391028022, + 38.89770346240009 + ], + [ + -77.03678374243779, + 38.89771858650649 + ], + [ + -77.03679750305476, + 38.89771854892652 + ], + [ + -77.03679774079657, + 38.89777127744692 + ], + [ + -77.03670278486749, + 38.89777153676942 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03759768204795, + 38.89741991239419 + ], + [ + -77.03759766225218, + 38.897399215687315 + ], + [ + -77.03760618365789, + 38.897399363304075 + ], + [ + -77.03763287764137, + 38.897399459931485 + ], + [ + -77.03769266398403, + 38.897399676347256 + ], + [ + -77.03774351155307, + 38.89739986040634 + ], + [ + -77.03774338911107, + 38.89742034869453 + ], + [ + -77.03774333620927, + 38.897429200785574 + ], + [ + -77.03771945296972, + 38.89742911433259 + ], + [ + -77.03771939136696, + 38.897439422355845 + ], + [ + -77.03774337601037, + 38.89743950917589 + ], + [ + -77.03774328665504, + 38.897454461051474 + ], + [ + -77.03774321689156, + 38.89746613460469 + ], + [ + -77.03771464991101, + 38.897466031197446 + ], + [ + -77.03771433071972, + 38.89751944161239 + ], + [ + -77.03771419772218, + 38.89754169613175 + ], + [ + -77.03769919747957, + 38.89754164183368 + ], + [ + -77.03769924857713, + 38.897533091661764 + ], + [ + -77.0376995702955, + 38.89747925840778 + ], + [ + -77.03769987739432, + 38.89742787140515 + ], + [ + -77.03768939067875, + 38.89742783344514 + ], + [ + -77.03768943711752, + 38.89742006281795 + ], + [ + -77.03764198103237, + 38.897419891035504 + ], + [ + -77.03759768204795, + 38.89741991239419 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03705108372742, + 38.897687579195335 + ], + [ + -77.0370508232524, + 38.897718309320744 + ], + [ + -77.03702767601366, + 38.89772516408346 + ], + [ + -77.03701324697501, + 38.897731418666176 + ], + [ + -77.03699858184206, + 38.89774011716941 + ], + [ + -77.03697837825784, + 38.897752032503256 + ], + [ + -77.0369545122073, + 38.89775779361912 + ], + [ + -77.03693083552088, + 38.89775805305766 + ], + [ + -77.0369317338318, + 38.89768691840108 + ], + [ + -77.03705108372742, + 38.897687579195335 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03755047350235, + 38.89756849256632 + ], + [ + -77.03755053216085, + 38.8975599672803 + ], + [ + -77.03750649176602, + 38.89755980616672 + ], + [ + -77.03750655258793, + 38.897549760067456 + ], + [ + -77.03745622206026, + 38.897549550286 + ], + [ + -77.03745567643679, + 38.89759763192756 + ], + [ + -77.03745586413005, + 38.89760526734911 + ], + [ + -77.03755016496176, + 38.89760561192253 + ], + [ + -77.03755047350235, + 38.89756849256632 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03750655258793, + 38.897549760067456 + ], + [ + -77.03755060112881, + 38.89754994364271 + ], + [ + -77.03755053216085, + 38.8975599672803 + ], + [ + -77.03750649176602, + 38.89755980616672 + ], + [ + -77.03750655258793, + 38.897549760067456 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03752153795268, + 38.897538659169875 + ], + [ + -77.03752167820025, + 38.897518277662186 + ], + [ + -77.03749543792901, + 38.897518204106845 + ], + [ + -77.03749548018097, + 38.89753855057234 + ], + [ + -77.03752153795268, + 38.897538659169875 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03749548018097, + 38.89753855057234 + ], + [ + -77.03745634873275, + 38.89753838759868 + ], + [ + -77.03745651459585, + 38.897523771339486 + ], + [ + -77.03745631268868, + 38.89751809443299 + ], + [ + -77.03749543792901, + 38.897518204106845 + ], + [ + -77.03749548018097, + 38.89753855057234 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03574117545786, + 38.89776806448733 + ], + [ + -77.03574123252616, + 38.89776186928833 + ], + [ + -77.03574121892365, + 38.89772634893924 + ], + [ + -77.03570674167251, + 38.89772655067907 + ], + [ + -77.03566060733874, + 38.897726503962446 + ], + [ + -77.03566020095506, + 38.89776761268756 + ], + [ + -77.03574117545786, + 38.89776806448733 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03752167820025, + 38.897518277662186 + ], + [ + -77.03759736711471, + 38.89751848982938 + ], + [ + -77.03759724492583, + 38.897532783003065 + ], + [ + -77.03760437879923, + 38.89753281273398 + ], + [ + -77.03760413176437, + 38.897568716190676 + ], + [ + -77.03758591025813, + 38.89756864025133 + ], + [ + -77.03755047350235, + 38.89756849256632 + ], + [ + -77.03755053216085, + 38.8975599672803 + ], + [ + -77.03755060112881, + 38.89754994364271 + ], + [ + -77.03750655258793, + 38.897549760067456 + ], + [ + -77.03745622206026, + 38.897549550286 + ], + [ + -77.03745634873275, + 38.89753838759868 + ], + [ + -77.03749548018097, + 38.89753855057234 + ], + [ + -77.03752153795268, + 38.897538659169875 + ], + [ + -77.03752167820025, + 38.897518277662186 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03566020095506, + 38.89776761268756 + ], + [ + -77.03560974112769, + 38.89776733114542 + ], + [ + -77.03560978332409, + 38.89776275040822 + ], + [ + -77.0356098211602, + 38.8977264525353 + ], + [ + -77.03566060733874, + 38.897726503962446 + ], + [ + -77.03566020095506, + 38.89776761268756 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0356098211602, + 38.8977264525353 + ], + [ + -77.03557099037758, + 38.89772653928624 + ], + [ + -77.03557065882256, + 38.8977625321118 + ], + [ + -77.03560978332409, + 38.89776275040822 + ], + [ + -77.0356098211602, + 38.8977264525353 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03759747168822, + 38.89749589356089 + ], + [ + -77.03750542868623, + 38.897495635550676 + ], + [ + -77.03745641726218, + 38.897495498164346 + ], + [ + -77.03745631268868, + 38.89751809443299 + ], + [ + -77.03749543792901, + 38.897518204106845 + ], + [ + -77.03752167820025, + 38.897518277662186 + ], + [ + -77.03759736711471, + 38.89751848982938 + ], + [ + -77.03759747168822, + 38.89749589356089 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03574121892365, + 38.89772634893924 + ], + [ + -77.03578124730468, + 38.89772623347407 + ], + [ + -77.03578091699866, + 38.897762090709065 + ], + [ + -77.03574123252616, + 38.89776186928833 + ], + [ + -77.03574121892365, + 38.89772634893924 + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "name": "The Oval Office" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03745729932719, + 38.89735249682294 + ], + [ + -77.03745876466279, + 38.8973569969156 + ], + [ + -77.03746169411053, + 38.8973662797251 + ], + [ + -77.0374621236535, + 38.89737152296883 + ], + [ + -77.03746238828211, + 38.897374753174816 + ], + [ + -77.03746101772985, + 38.897386575048756 + ], + [ + -77.03745892355825, + 38.897394704755634 + ], + [ + -77.0374565306735, + 38.89739921192618 + ], + [ + -77.03745381772985, + 38.89740432195022 + ], + [ + -77.03744889993888, + 38.89741147352971 + ], + [ + -77.03743872938665, + 38.897419543825265 + ], + [ + -77.03743413490918, + 38.89742257353262 + ], + [ + -77.03743230713577, + 38.897423471911345 + ], + [ + -77.03742300546142, + 38.89742804382714 + ], + [ + -77.03741251711821, + 38.897429326634594 + ], + [ + -77.03740238153618, + 38.897430092249245 + ], + [ + -77.03739026957358, + 38.89742771879905 + ], + [ + -77.0373834915806, + 38.89742527697119 + ], + [ + -77.03737709319297, + 38.89742297189925 + ], + [ + -77.03736859902138, + 38.89741612499999 + ], + [ + -77.03736112599921, + 38.89740562991937 + ], + [ + -77.03735610515557, + 38.897394621845216 + ], + [ + -77.03735284656591, + 38.89738379997339 + ], + [ + -77.03735377601366, + 38.89737267810133 + ], + [ + -77.03735677018528, + 38.89736139529315 + ], + [ + -77.03736099380467, + 38.89735165622904 + ], + [ + -77.03736652325242, + 38.89734377810117 + ], + [ + -77.03737718184205, + 38.897334224995156 + ], + [ + -77.03738699349881, + 38.89732870312258 + ], + [ + -77.0373986934988, + 38.897325146866976 + ], + [ + -77.03741289932721, + 38.897323768739234 + ], + [ + -77.03742804626008, + 38.8973276390372 + ], + [ + -77.03744034626008, + 38.89733469214328 + ], + [ + -77.0374495346033, + 38.89734269682355 + ], + [ + -77.03745729932719, + 38.89735249682294 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03759768204795, + 38.89741991239419 + ], + [ + -77.03750576698705, + 38.8974199656442 + ], + [ + -77.03749244965479, + 38.897419973359455 + ], + [ + -77.03749242985906, + 38.89739927665259 + ], + [ + -77.03751819528335, + 38.897399261725695 + ], + [ + -77.03758110027158, + 38.89739922528235 + ], + [ + -77.03759766225218, + 38.897399215687315 + ], + [ + -77.03759768204795, + 38.89741991239419 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03570673049497, + 38.89769843769159 + ], + [ + -77.03578191471405, + 38.89769871004924 + ], + [ + -77.03578124730468, + 38.89772623347407 + ], + [ + -77.03574121892365, + 38.89772634893924 + ], + [ + -77.03570674167251, + 38.89772655067907 + ], + [ + -77.03570673049497, + 38.89769843769159 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03749244965479, + 38.897419973359455 + ], + [ + -77.03750576698705, + 38.8974199656442 + ], + [ + -77.03750576760538, + 38.897432876142624 + ], + [ + -77.03749872680675, + 38.89743548550038 + ], + [ + -77.03749285947451, + 38.897439399536864 + ], + [ + -77.03748783033261, + 38.89744318310524 + ], + [ + -77.03748296882878, + 38.897447619012745 + ], + [ + -77.03748062189588, + 38.89745270725924 + ], + [ + -77.03748028661974, + 38.89745831737677 + ], + [ + -77.03748078953394, + 38.897464188429495 + ], + [ + -77.03748347174296, + 38.897470320417405 + ], + [ + -77.03748498338224, + 38.89747233021144 + ], + [ + -77.03746251698497, + 38.89747227743471 + ], + [ + -77.03746251698497, + 38.897463275154635 + ], + [ + -77.03745664965277, + 38.89746314468681 + ], + [ + -77.03745667922286, + 38.897453028841966 + ], + [ + -77.03744986031123, + 38.89745459904312 + ], + [ + -77.0374424842365, + 38.897453816236016 + ], + [ + -77.03743644926617, + 38.897450685007485 + ], + [ + -77.037433347962, + 38.8974447487197 + ], + [ + -77.03743275267085, + 38.897439007993356 + ], + [ + -77.03743230713577, + 38.897423471911345 + ], + [ + -77.03743413490918, + 38.89742257353262 + ], + [ + -77.03743872938665, + 38.897419543825265 + ], + [ + -77.03744889993888, + 38.89741147352971 + ], + [ + -77.03745381772985, + 38.89740432195022 + ], + [ + -77.0374565306735, + 38.89739921192618 + ], + [ + -77.03748909188833, + 38.89739915565516 + ], + [ + -77.03749242985906, + 38.89739927665259 + ], + [ + -77.03749244965479, + 38.897419973359455 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03557132741848, + 38.89768995090848 + ], + [ + -77.03562121688762, + 38.897690175586305 + ], + [ + -77.03562114373396, + 38.89770001565599 + ], + [ + -77.03566106782284, + 38.89770019543199 + ], + [ + -77.03566175839941, + 38.897607304305645 + ], + [ + -77.03559497216365, + 38.89760700357052 + ], + [ + -77.03559508658049, + 38.897591613075946 + ], + [ + -77.03557223422186, + 38.89759151034043 + ], + [ + -77.03557132741848, + 38.89768995090848 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.0357820064609, + 38.89764788177072 + ], + [ + -77.03572999197975, + 38.89764782773308 + ], + [ + -77.03573020884423, + 38.89761915798742 + ], + [ + -77.0357302884157, + 38.89760749541164 + ], + [ + -77.03578212051596, + 38.89760767155229 + ], + [ + -77.03578213218975, + 38.89763203989219 + ], + [ + -77.0357820064609, + 38.89764788177072 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03572999197975, + 38.89764782773308 + ], + [ + -77.03569602075653, + 38.89764779333308 + ], + [ + -77.03569606886623, + 38.89761901639156 + ], + [ + -77.03573020884423, + 38.89761915798742 + ], + [ + -77.03572999197975, + 38.89764782773308 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03782212415496, + 38.897420549854964 + ], + [ + -77.03774338911107, + 38.89742034869453 + ], + [ + -77.03774351155307, + 38.89739986040634 + ], + [ + -77.03774431787075, + 38.897334342394956 + ], + [ + -77.03782259932719, + 38.89733459997336 + ], + [ + -77.03782212415496, + 38.897420549854964 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03569606886623, + 38.89761901639156 + ], + [ + -77.03569608815222, + 38.89760738078148 + ], + [ + -77.0357302884157, + 38.89760749541164 + ], + [ + -77.03573020884423, + 38.89761915798742 + ], + [ + -77.03569606886623, + 38.89761901639156 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03750542868623, + 38.897495635550676 + ], + [ + -77.03750543232925, + 38.8974859765543 + ], + [ + -77.03749755334029, + 38.89748375860178 + ], + [ + -77.03749202128418, + 38.89748023597116 + ], + [ + -77.03748749505648, + 38.8974756695979 + ], + [ + -77.03748498338224, + 38.89747233021144 + ], + [ + -77.03748347174296, + 38.897470320417405 + ], + [ + -77.03748078953394, + 38.897464188429495 + ], + [ + -77.03748028661974, + 38.89745831737677 + ], + [ + -77.03748062189588, + 38.89745270725924 + ], + [ + -77.03748296882878, + 38.897447619012745 + ], + [ + -77.03748783033261, + 38.89744318310524 + ], + [ + -77.03749285947451, + 38.897439399536864 + ], + [ + -77.03749872680675, + 38.89743548550038 + ], + [ + -77.03750576760538, + 38.897432876142624 + ], + [ + -77.03750576698705, + 38.8974199656442 + ], + [ + -77.03759768204795, + 38.89741991239419 + ], + [ + -77.03759760920929, + 38.89747904728604 + ], + [ + -77.03759747168822, + 38.89749589356089 + ], + [ + -77.03750542868623, + 38.897495635550676 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03774351155307, + 38.89739986040634 + ], + [ + -77.03769266398403, + 38.897399676347256 + ], + [ + -77.03769287775671, + 38.897334192220164 + ], + [ + -77.03774431787075, + 38.897334342394956 + ], + [ + -77.03774351155307, + 38.89739986040634 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03578195938897, + 38.897671543732564 + ], + [ + -77.03570689296878, + 38.89767127146563 + ], + [ + -77.03570673049497, + 38.89769843769159 + ], + [ + -77.03578191471405, + 38.89769871004924 + ], + [ + -77.03578191330874, + 38.897694707196194 + ], + [ + -77.03578195938897, + 38.897671543732564 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03578195938897, + 38.897671543732564 + ], + [ + -77.03570689296878, + 38.89767127146563 + ], + [ + -77.03570673049497, + 38.89769843769159 + ], + [ + -77.03570674167251, + 38.89772655067907 + ], + [ + -77.03566060733874, + 38.897726503962446 + ], + [ + -77.0356098211602, + 38.8977264525353 + ], + [ + -77.03557099037758, + 38.89772653928624 + ], + [ + -77.03557132741848, + 38.89768995090848 + ], + [ + -77.03562121688762, + 38.897690175586305 + ], + [ + -77.03562114373396, + 38.89770001565599 + ], + [ + -77.03566106782284, + 38.89770019543199 + ], + [ + -77.03566175839941, + 38.897607304305645 + ], + [ + -77.03569608815222, + 38.89760738078148 + ], + [ + -77.03569606886623, + 38.89761901639156 + ], + [ + -77.03569602075653, + 38.89764779333308 + ], + [ + -77.03572999197975, + 38.89764782773308 + ], + [ + -77.0357820064609, + 38.89764788177072 + ], + [ + -77.03578195938897, + 38.897671543732564 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03769266398403, + 38.897399676347256 + ], + [ + -77.03763287764137, + 38.897399459931485 + ], + [ + -77.03763307459683, + 38.89737079061008 + ], + [ + -77.03763328924715, + 38.89733396801603 + ], + [ + -77.03769287775671, + 38.897334192220164 + ], + [ + -77.03769266398403, + 38.897399676347256 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03763287764137, + 38.897399459931485 + ], + [ + -77.03760618365789, + 38.897399363304075 + ], + [ + -77.03760635076607, + 38.89737069625206 + ], + [ + -77.03763307459683, + 38.89737079061008 + ], + [ + -77.03763287764137, + 38.897399459931485 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03748498338224, + 38.89747233021144 + ], + [ + -77.03746251698497, + 38.89747227743471 + ], + [ + -77.03745656131528, + 38.89747214413154 + ], + [ + -77.03745641726218, + 38.897495498164346 + ], + [ + -77.03750542868623, + 38.897495635550676 + ], + [ + -77.03750543232925, + 38.8974859765543 + ], + [ + -77.03749755334029, + 38.89748375860178 + ], + [ + -77.03749202128418, + 38.89748023597116 + ], + [ + -77.03748749505648, + 38.8974756695979 + ], + [ + -77.03748498338224, + 38.89747233021144 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03760618365789, + 38.897399363304075 + ], + [ + -77.03759766225218, + 38.897399215687315 + ], + [ + -77.03758110027158, + 38.89739922528235 + ], + [ + -77.03758148235589, + 38.89733378509326 + ], + [ + -77.03763328924715, + 38.89733396801603 + ], + [ + -77.03763307459683, + 38.89737079061008 + ], + [ + -77.03760635076607, + 38.89737069625206 + ], + [ + -77.03760618365789, + 38.897399363304075 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03578208923254, + 38.89754236935408 + ], + [ + -77.03569761031001, + 38.89754288036004 + ], + [ + -77.03566266518436, + 38.89754265609266 + ], + [ + -77.0355944045671, + 38.89754248051244 + ], + [ + -77.03559431325908, + 38.897558981115026 + ], + [ + -77.03557253454143, + 38.89755890828139 + ], + [ + -77.03557223422186, + 38.89759151034043 + ], + [ + -77.03559508658049, + 38.897591613075946 + ], + [ + -77.03559497216365, + 38.89760700357052 + ], + [ + -77.03566175839941, + 38.897607304305645 + ], + [ + -77.03569608815222, + 38.89760738078148 + ], + [ + -77.0357302884157, + 38.89760749541164 + ], + [ + -77.03578212051596, + 38.89760767155229 + ], + [ + -77.03578208923254, + 38.89754236935408 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03758110027158, + 38.89739922528235 + ], + [ + -77.03751819528335, + 38.897399261725695 + ], + [ + -77.03751818679, + 38.897384957666226 + ], + [ + -77.03751822629172, + 38.897371882628725 + ], + [ + -77.03751834198142, + 38.897333589409016 + ], + [ + -77.03758148235589, + 38.89733378509326 + ], + [ + -77.03758110027158, + 38.89739922528235 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03678391028022, + 38.89770346240009 + ], + [ + -77.03678358115228, + 38.89764957286611 + ], + [ + -77.03685392062708, + 38.897649742921466 + ], + [ + -77.03685387088443, + 38.89768685518885 + ], + [ + -77.03685389485014, + 38.897703114204056 + ], + [ + -77.03678391028022, + 38.89770346240009 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03578314936016, + 38.89750642224726 + ], + [ + -77.03569800324853, + 38.89750579470883 + ], + [ + -77.03569761031001, + 38.89754288036004 + ], + [ + -77.03578208923254, + 38.89754236935408 + ], + [ + -77.03578314936016, + 38.89750642224726 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03678358115228, + 38.89764957286611 + ], + [ + -77.03674399708453, + 38.8976495957241 + ], + [ + -77.0366989076499, + 38.897649554063 + ], + [ + -77.03660741865625, + 38.897649342568194 + ], + [ + -77.03648818831891, + 38.89764960098017 + ], + [ + -77.03639784436801, + 38.8976495112781 + ], + [ + -77.03639749504079, + 38.897703788977424 + ], + [ + -77.0364637606203, + 38.89770383619139 + ], + [ + -77.03653165367496, + 38.897703756922745 + ], + [ + -77.03658554796348, + 38.897703693998366 + ], + [ + -77.03664332743242, + 38.89770362653781 + ], + [ + -77.03666248961544, + 38.897703604165024 + ], + [ + -77.03670258300679, + 38.8977035573539 + ], + [ + -77.03678391028022, + 38.89770346240009 + ], + [ + -77.03678358115228, + 38.89764957286611 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03566266518436, + 38.89754265609266 + ], + [ + -77.0356628599211, + 38.89752427678342 + ], + [ + -77.03557285903454, + 38.897523681983074 + ], + [ + -77.03557253454143, + 38.89755890828139 + ], + [ + -77.03559431325908, + 38.897558981115026 + ], + [ + -77.0355944045671, + 38.89754248051244 + ], + [ + -77.03566266518436, + 38.89754265609266 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -77.03639749504079, + 38.897703788977424 + ], + [ + -77.03631152214317, + 38.89770358668694 + ], + [ + -77.03625280786692, + 38.89770344853483 + ], + [ + -77.03625283598619, + 38.897696210037196 + ], + [ + -77.0362530185113, + 38.89764922411891 + ], + [ + -77.03631021779809, + 38.8976492275656 + ], + [ + -77.03639784436801, + 38.8976495112781 + ], + [ + -77.03639749504079, + 38.897703788977424 + ] + ] + } + } + ] +} diff --git a/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/ios.xcodeproj/project.pbxproj index cb5a5587a2..3b5c796f16 100644 --- a/platform/ios/ios.xcodeproj/project.pbxproj +++ b/platform/ios/ios.xcodeproj/project.pbxproj @@ -36,6 +36,12 @@ 1F7454971ECD450D00021D39 /* MGLLight_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7454941ECD450D00021D39 /* MGLLight_Private.h */; }; 1F7454A91ED08AB400021D39 /* MGLLightTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F7454A61ED08AB400021D39 /* MGLLightTest.mm */; }; 1F95931D1E6DE2E900D5B294 /* MGLNSDateAdditionsTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F95931C1E6DE2E900D5B294 /* MGLNSDateAdditionsTests.mm */; }; + 1FFCB53E20A1015C003F9D50 /* MGLLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FFCB53C20A1015C003F9D50 /* MGLLocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FFCB53F20A1015C003F9D50 /* MGLLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFCB53D20A1015C003F9D50 /* MGLLocationManager.m */; }; + 1FFDF91220A50B160063BB80 /* MGLLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FFCB53C20A1015C003F9D50 /* MGLLocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FFDF91520A5E82E0063BB80 /* MBXCustomLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFDF91420A5E82E0063BB80 /* MBXCustomLocationManager.m */; }; + 1FFDF91720A637460063BB80 /* coordinates.json in Resources */ = {isa = PBXBuildFile; fileRef = 1FFDF91620A637460063BB80 /* coordinates.json */; }; + 1FFDF91920A63C4A0063BB80 /* white_house_lvl_0.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 1FFDF91820A63C4A0063BB80 /* white_house_lvl_0.geojson */; }; 30E578171DAA85520050F07E /* UIImage+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E578111DAA7D690050F07E /* UIImage+MGLAdditions.h */; }; 30E578181DAA85520050F07E /* UIImage+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E578111DAA7D690050F07E /* UIImage+MGLAdditions.h */; }; 30E578191DAA855E0050F07E /* UIImage+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 30E578121DAA7D690050F07E /* UIImage+MGLAdditions.mm */; }; @@ -754,6 +760,12 @@ 1F7454941ECD450D00021D39 /* MGLLight_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLight_Private.h; sourceTree = "<group>"; }; 1F7454A61ED08AB400021D39 /* MGLLightTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLLightTest.mm; path = ../../darwin/test/MGLLightTest.mm; sourceTree = "<group>"; }; 1F95931C1E6DE2E900D5B294 /* MGLNSDateAdditionsTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLNSDateAdditionsTests.mm; path = ../../darwin/test/MGLNSDateAdditionsTests.mm; sourceTree = "<group>"; }; + 1FFCB53C20A1015C003F9D50 /* MGLLocationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLLocationManager.h; sourceTree = "<group>"; }; + 1FFCB53D20A1015C003F9D50 /* MGLLocationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLLocationManager.m; sourceTree = "<group>"; }; + 1FFDF91320A5E82E0063BB80 /* MBXCustomLocationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXCustomLocationManager.h; sourceTree = "<group>"; }; + 1FFDF91420A5E82E0063BB80 /* MBXCustomLocationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXCustomLocationManager.m; sourceTree = "<group>"; }; + 1FFDF91620A637460063BB80 /* coordinates.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = coordinates.json; sourceTree = "<group>"; }; + 1FFDF91820A63C4A0063BB80 /* white_house_lvl_0.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = white_house_lvl_0.geojson; sourceTree = "<group>"; }; 20DABE861DF78148007AC5FF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Foundation.strings"; sourceTree = "<group>"; }; 20DABE881DF78148007AC5FF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; }; 20DABE8A1DF78149007AC5FF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Root.strings"; sourceTree = "<group>"; }; @@ -1682,6 +1694,8 @@ DA1DC96C1CB6C6CE006E619F /* points.geojson */, DA1DC96D1CB6C6CE006E619F /* polyline.geojson */, DA1DC96F1CB6C6CE006E619F /* threestates.geojson */, + 1FFDF91820A63C4A0063BB80 /* white_house_lvl_0.geojson */, + 1FFDF91620A637460063BB80 /* coordinates.json */, DD4823721D94AE6C00EB71B7 /* fill_filter_style.json */, DD4823731D94AE6C00EB71B7 /* line_filter_style.json */, DD4823741D94AE6C00EB71B7 /* numeric_filter_style.json */, @@ -1747,6 +1761,8 @@ 96E027251E57C76E004B8E66 /* Localizable.strings */, 9604FC341F313A5E003EEA02 /* Fixtures */, DA1DC94D1CB6C1C2006E619F /* Supporting Files */, + 1FFDF91320A5E82E0063BB80 /* MBXCustomLocationManager.h */, + 1FFDF91420A5E82E0063BB80 /* MBXCustomLocationManager.m */, ); name = "Demo App"; path = app; @@ -1881,6 +1897,8 @@ DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */, DA8848111CBAFA6200AB86E3 /* MGLTypes.m */, 35E1A4D71D74336F007AA97F /* MGLValueEvaluator.h */, + 1FFCB53C20A1015C003F9D50 /* MGLLocationManager.h */, + 1FFCB53D20A1015C003F9D50 /* MGLLocationManager.m */, ); name = Foundation; path = ../darwin/src; @@ -2221,6 +2239,7 @@ 0778DD431F67556700A73B34 /* MGLComputedShapeSource.h in Headers */, DA8848311CBAFA6200AB86E3 /* NSString+MGLAdditions.h in Headers */, DACA86262019218600E9693A /* MGLRasterDEMSource.h in Headers */, + 1FFCB53E20A1015C003F9D50 /* MGLLocationManager.h in Headers */, 353933F81D3FB79F003F57D7 /* MGLLineStyleLayer.h in Headers */, 92F2C3ED1F0E3C3A00268EC0 /* MGLRendererFrontend.h in Headers */, DAAF722D1DA903C700312FA4 /* MGLStyleValue_Private.h in Headers */, @@ -2404,6 +2423,7 @@ DABFB86B1CBE99E500D62B32 /* MGLTilePyramidOfflineRegion.h in Headers */, 968F36B51E4D128D003A5522 /* MGLDistanceFormatter.h in Headers */, 4018B1CB1CDC288E00F666AF /* MGLAnnotationView.h in Headers */, + 1FFDF91220A50B160063BB80 /* MGLLocationManager.h in Headers */, DABFB85F1CBE99E500D62B32 /* MGLGeometry.h in Headers */, 96E516E02000550C00A02306 /* MGLFeature_Private.h in Headers */, 353933F61D3FB785003F57D7 /* MGLBackgroundStyleLayer.h in Headers */, @@ -2723,8 +2743,10 @@ DA821D071CCC6D59007508D4 /* Main.storyboard in Resources */, DA1DC9731CB6C6CE006E619F /* threestates.geojson in Resources */, DA821D061CCC6D59007508D4 /* LaunchScreen.storyboard in Resources */, + 1FFDF91720A637460063BB80 /* coordinates.json in Resources */, 96E027231E57C76E004B8E66 /* Localizable.strings in Resources */, DD4823751D94AE6C00EB71B7 /* fill_filter_style.json in Resources */, + 1FFDF91920A63C4A0063BB80 /* white_house_lvl_0.geojson in Resources */, DA1DC99F1CB6E088006E619F /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2820,6 +2842,7 @@ DA1DC99B1CB6E064006E619F /* MBXViewController.m in Sources */, 40FDA76B1CCAAA6800442548 /* MBXAnnotationView.m in Sources */, 632281DF1E6F855900D75A5D /* MBXEmbeddedMapViewController.m in Sources */, + 1FFDF91520A5E82E0063BB80 /* MBXCustomLocationManager.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2981,6 +3004,7 @@ 40834BED1FE05E1800C1BD0D /* MMEEventLogger.m in Sources */, 353AFA161D65AB17005A69F4 /* NSDate+MGLAdditions.mm in Sources */, 40834BF41FE05E1800C1BD0D /* MMETrustKitWrapper.m in Sources */, + 1FFCB53F20A1015C003F9D50 /* MGLLocationManager.m in Sources */, 40834BEF1FE05E1800C1BD0D /* MMEEventsManager.m in Sources */, 35D13AC51D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */, DA8848241CBAFA6200AB86E3 /* MGLOfflineStorage.mm in Sources */, diff --git a/platform/ios/src/MGLMapView.h b/platform/ios/src/MGLMapView.h index bde8e6a71d..146c06917e 100644 --- a/platform/ios/src/MGLMapView.h +++ b/platform/ios/src/MGLMapView.h @@ -2,7 +2,7 @@ #import "MGLMapCamera.h" #import <UIKit/UIKit.h> -#import <CoreLocation/CoreLocation.h> +#import "MGLLocationManager.h" #import "MGLFoundation.h" #import "MGLTypes.h" @@ -296,6 +296,8 @@ MGL_EXPORT IB_DESIGNABLE #pragma mark Displaying the User’s Location +@property(nonatomic, strong, nullable) id<MGLLocationManager> locationManager; + /** A Boolean value indicating whether the map may display the user location. diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 978547b9c6..a26e8688c8 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -184,7 +184,7 @@ public: @interface MGLMapView () <UIGestureRecognizerDelegate, GLKViewDelegate, - CLLocationManagerDelegate, + MGLLocationManagerDelegate, MGLSMCalloutViewDelegate, MGLCalloutViewDelegate, MGLMultiPointDelegate, @@ -225,7 +225,7 @@ public: /// Indicates how thoroughly the map view is tracking the user location. @property (nonatomic) MGLUserTrackingState userTrackingState; -@property (nonatomic) CLLocationManager *locationManager; + @property (nonatomic) CGFloat scale; @property (nonatomic) CGFloat angle; @property (nonatomic) CGFloat quickZoomStart; @@ -4653,13 +4653,20 @@ public: #pragma mark - User Location - +- (void)setLocationManager:(id<MGLLocationManager>)locationManager +{ + _locationManager = locationManager; + [_locationManager setDelegate:self]; + [self validateLocationServices]; +} + - (void)validateLocationServices { BOOL shouldEnableLocationServices = self.showsUserLocation && !self.dormant; if (shouldEnableLocationServices && ! self.locationManager) { - self.locationManager = [[CLLocationManager alloc] init]; + self.locationManager = [[MGLAppleLocationManager alloc] init]; if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) { @@ -4692,7 +4699,7 @@ public: } } - self.locationManager.delegate = self; + [self.locationManager setDelegate:self]; [self.locationManager startUpdatingLocation]; [self validateUserHeadingUpdating]; @@ -4701,7 +4708,7 @@ public: { [self.locationManager stopUpdatingLocation]; [self.locationManager stopUpdatingHeading]; - self.locationManager.delegate = nil; + [self.locationManager setDelegate:nil]; self.locationManager = nil; } } @@ -4932,12 +4939,12 @@ public: } } -- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations +- (void)locationManager:(id<MGLLocationManager>)manager didUpdateLocations:(NSArray *)locations { [self locationManager:manager didUpdateLocations:locations animated:YES]; } -- (void)locationManager:(__unused CLLocationManager *)manager didUpdateLocations:(NSArray *)locations animated:(BOOL)animated +- (void)locationManager:(__unused id<MGLLocationManager>)manager didUpdateLocations:(NSArray *)locations animated:(BOOL)animated { CLLocation *oldLocation = self.userLocation.location; CLLocation *newLocation = locations.lastObject; @@ -5251,7 +5258,7 @@ public: // loop... so don't do that. rdar://34059173 if (self.locationManager.headingOrientation != orientation) { - self.locationManager.headingOrientation = orientation; + [self.locationManager setHeadingOrientation:orientation]; } } } diff --git a/platform/ios/src/Mapbox.h b/platform/ios/src/Mapbox.h index 20417dbbd4..bcec7e8298 100644 --- a/platform/ios/src/Mapbox.h +++ b/platform/ios/src/Mapbox.h @@ -66,3 +66,4 @@ FOUNDATION_EXPORT MGL_EXPORT const unsigned char MapboxVersionString[]; #import "MGLAttributionInfo.h" #import "MGLMapSnapshotter.h" #import "NSExpression+MGLAdditions.h" +#import "MGLLocationManager.h" |